- hex(),只能将整数转换成十六进制的字符串
- bool(),bool(0),bool(”),bool(False)是转换成False,其他都是True
- 在当前目录导入一个py的函数,from 文件名(不加py) import 函数名(不加括号)
- 参数类型检查,可以用 isinstance(x,(int,float)),检查x是否是整型,浮点型
- 函数默认参数,如下def enroll(name,gender,age=6,city=’beijing’)可以不按顺序调用默认参数,指定默认参数值就行,如enroll(‘zhou’,’male’,city=’hangzhou’)
- 默认参数的陷阱:
def add_end(L=[]):
L.append('end')
reutn L
每次调用都会加一个end,因为函数定义时,L就指向了一块内存,要避免这种情况,可以这样
def add_end(L=None):
if L is None:
L = []
L.append('end')
return L
- 可变参数调用在参数前加一个*即可
def calc(*numbers):
sum=0
for n in numbers:
sum=sum+n*n
return sum```
可以calc(1,2)-->5 calc()-->0
* 把列表当作可变参数传进去,直接传递给有可变参数的函数会报错,calc(*[1,2,3])
* 关键字参数,能传进去一个字典
···python
def person(name,age,**kw):
print('name:',name,'age:',age,'other:',kw)
person(‘michael’,30)—->name:michael age:30 other:{}
persion(‘bob’,35,city=’beijing’)—->name:bob age:35 other:{‘city’:’beijing’}
person(‘adam’,45,gender=’m’,job=’engineer’)—>name:adam age:45 other:{‘gender’:’m’, ‘job’:’engineer}
extra={‘city’:’beijing’,’job’:’engineer’}
person(‘jack’,24,**extra)
- 如果要限制关键字参数的名字,就可以使用命名关键字参数,例如,只接收city,job作为关键字,
def person(name,age,*,city,job):
print(name,age,city,job)
- 如果关键字有缺省值,可以简化调用,如def person(name,age,*,city=’beijing’,job) 可以这样调用person(‘jack’,24,job=’engineer)
- 参数定义的顺序:必选参数,默认参数,可变参数/命名关键字参数,关键字参数
- *
def f1(a,b,c=0,*agrs,**kw)
print('a=',a,'b=',b,'c=',c,'args=',args,'kw=',kw)
def f2(a,b,c=0,*,d,**kw):
print('a=',a,'b=',b,'c=',c,'d=',d,'kw=',kw)
f1(1,2)—->a=1 b=2 c=3 args=() kw={}
f1(1,2,3,c=3)—>a=1 b=2 c=3 args=() kw={}
f1(1,2,3,’a’,’b’)–>a=1 b=2 c=3 args=(‘a’,’b’) kw={}
f1(1,2,3,’a’,’b’,x=99)–>a=1 b=2 c=3 args=(‘a’,’b’) kw={‘x’:99}
f2(1,2,d=99,ext=None)–>a=1 b=2 c=0 d=99 kw={‘ext’:None}
args=(1,2,3,4)
kw={‘d’:99,’x’:’#’}
f1(*args,**kw)
—>a=1 b=2 c=3 args=(4,) kw={‘d’,99,’x’:’#’}
args=(1,2,3)
kw={‘d’:88,’x’:’#’}
f2(*args,**kw)
—>a=1 b=2 c=3 d=88 kw={‘x’:’#’}