函数,对象,模块
函数文档
>>> def myfirstfunction(name):
'这个函数用来打印一段字'
#'这个不会打印出来'
print(name)
>>> myfirstfunction('xinyue')
xinyue
>>> myfirstfunction.__doc__
'这个函数用来打印一段字'
>>> help(myfirstfunction)
Help on function myfirstfunction in module __main__:
myfirstfunction(name)
这个函数用来打印一段字
参数
收集参数(可变参数)
>>> def text(*params):
print('第一个参数是:',params)
>>> text(1,'小可爱',3,4,5)
第一个参数是: (1, '小可爱', 3, 4, 5) #默认大打包为tuple
>>> def text(*params,exp): #exp为命名关键字参数
print('第一个参数是:',params)
print('第二个参数是:',exp)
>>> text(1,'小可爱',3,4,5)
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
text(1,'小可爱',3,4,5)
TypeError: text() missing 1 required keyword-only argument: 'exp'
>>> text(1,'小可爱',3,4,exp=5)
第一个参数是: (1, '小可爱', 3, 4)
第二个参数是: 5
>>>
如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:
>>> nums = [1, 2, 3]
>>> calc(nums[0], nums[1], nums[2])
14
这种写法当然是可行的,问题是太繁琐,所以Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:
>>> nums = [1, 2, 3]
>>> calc(*nums) #推荐
14
*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。
默认参数
默认参数必须指向不变对象!
>>> def add_end(L=[]):
L.append('end')
return L
>>> add_end()
['end']
>>> add_end()
['end', 'end']
修改:
def add_end(L=None):
if L is None:
L = []
L.append('END')
return L
关键字参数
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
在调用该函数时,可以只传入必选参数:
>>> person('Michael', 30)
name: Michael age: 30 other: {}
也可以传入任意个数的关键字参数:
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {
'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {
'gender':