python学习笔记4--函数
2017-03-19 20:16
495 查看
昨天写的笔记好像忘记保存了。今天重新简单得记录一下。
函数的定义
def functionname(argument1,argument2...):
#TODO
return argument1
例:
16行的quadratic就是在utils.py文件中预定义好的function,import之后,直接传入参数既可以使用。
import 语句:from 文件路径 import functionname1,functionname2
如果整个文件里面的function都要使用的话也可以直接用 import *
函数的参数
Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。
默认参数
直接上例子
def pow(x,n=2)
s = 1
while n > 0:
s *= x
n -= 1
return s
对函数进行调用时,若第二个参数不传,则默认返回传入值的平方。如pow(3) -->9。
传入第二个参数时,则获得x的n次方。例如pow(3,3) -->27
PS.有多个参数时,第一个参数不能为默认参数,因为调用时无法分辨第一个参数是否被忽略
思考如下代码
console中打印出来的不是预想的['END'],而是['END','END']
原因:python函数在被载入时,默认参数也被开辟内存保存起来。所以如果默认参数是可变数据类型的话,其内容是可变的(不变的只是内存地址)
上述问题可以用以下代码代替即可解决问题:
如果定义了多个默认参数,还可以使用下面的调用方法(*1)
可变参数
参数个数不定。
例:
调用
sample(1,2,3,4,5)
tupleObj = (1,2,3,4,5)
listObj= [1,2,3,4,5]
sample(*tupleObj)
sample(*listObj)
关键字参数
与上面标红字的(*1)类似,可以传入dict类型的参数。
def kwarg(a,b,c,**kw):
for x in kw:
print(x,":",kw[x])
#调用
dictX = {"name":"天才","age":5,"height":180}
kwarg(1,2,3,**dictX)
kwarg(1,2,3,name='haha',age=78)
将输出
name:天才
age:5
height:180
name:haha
age:78
以这种形式定义的函数,传入的key并没有被限制,调用者可以传入任何key。
那么当想要对key做出限制的时候,可以使用命名关键字参数
例子参照下图
由于传入了没有被定义的nice,报错。
函数的定义
def functionname(argument1,argument2...):
#TODO
return argument1
例:
16行的quadratic就是在utils.py文件中预定义好的function,import之后,直接传入参数既可以使用。
import 语句:from 文件路径 import functionname1,functionname2
如果整个文件里面的function都要使用的话也可以直接用 import *
函数的参数
Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。
默认参数
直接上例子
def pow(x,n=2)
s = 1
while n > 0:
s *= x
n -= 1
return s
对函数进行调用时,若第二个参数不传,则默认返回传入值的平方。如pow(3) -->9。
传入第二个参数时,则获得x的n次方。例如pow(3,3) -->27
PS.有多个参数时,第一个参数不能为默认参数,因为调用时无法分辨第一个参数是否被忽略
思考如下代码
def add_end(L=[]): L.append('END') return L add_end() print(add_end())
console中打印出来的不是预想的['END'],而是['END','END']
原因:python函数在被载入时,默认参数也被开辟内存保存起来。所以如果默认参数是可变数据类型的话,其内容是可变的(不变的只是内存地址)
上述问题可以用以下代码代替即可解决问题:
def add_end(L=None): if L is None: L = [] L.append('END') return L
如果定义了多个默认参数,还可以使用下面的调用方法(*1)
def add_end(a,b,L=None,c='heihei',d='oio'): if L is None: L = [] L.append('END') return L app_end(1,2,D='制定参数名调用哦')
可变参数
参数个数不定。
例:
def sample(*numbers): s = 0 for n in numbers: s+= n return s其实函数内部对参数numbers是作为一个tuple来处理的。
调用
sample(1,2,3,4,5)
tupleObj = (1,2,3,4,5)
listObj= [1,2,3,4,5]
sample(*tupleObj)
sample(*listObj)
关键字参数
与上面标红字的(*1)类似,可以传入dict类型的参数。
def kwarg(a,b,c,**kw):
for x in kw:
print(x,":",kw[x])
#调用
dictX = {"name":"天才","age":5,"height":180}
kwarg(1,2,3,**dictX)
kwarg(1,2,3,name='haha',age=78)
将输出
name:天才
age:5
height:180
name:haha
age:78
以这种形式定义的函数,传入的key并没有被限制,调用者可以传入任何key。
那么当想要对key做出限制的时候,可以使用命名关键字参数
例子参照下图
由于传入了没有被定义的nice,报错。
相关文章推荐
- Python函数学习笔记
- Python学习笔记整理(十二)Python的函数
- Python3.3 学习笔记8 - 函数
- python学习笔记--探索函数
- python 学习笔记 -- 函数
- Python 学习笔记:需要仔细阅读一个函数
- Python 学习笔记 - 9.函数(Function)
- python函数缺省值与引用学习笔记分享
- Python3.3 学习笔记4 - 函数 - input & print
- python学习笔记之open函数的用法
- Python 学习笔记(一)语句,变量,函数
- python学习笔记: 一些有用的文件操作函数
- Python2.7 学习笔记 (二)—— 函数,模块,正则
- python函数缺省值与引用学习笔记分享
- Python学习笔记(函数)
- python_模块与函数学习笔记
- python简明教程学习笔记2--函数
- python学习笔记8-函数整理
- python学习笔记(六)——函数
- Python学习笔记:函数与类