##函数定义
####一、 函数定义语法:
- def 函数名([参数列表]):
‘’‘注释’’’
函数体
注意事项 - 函数形参不需要声明类型,也不需要指定函数返回值类型
- 即使该函数不需要接收任何参数,也必须保留一对空的圆括号
- 括号后面的冒号必不可少
- 函数体相对于def关键字必须保持一定的空格缩进
- Python允许嵌套定义函数
我们来举一个例子,生成斐波那契数列的函数定义和调用
def fib(n):
a,b = 1,1
while a < n:
print(a,end = ' ')
a,b = b,a+b
print()
fib(1000)
- Python中的函数和自定义对象的成员也是可以随时发生改变的,可以为函数和自定义对象动态增加新成员。
>>> def func():
print(func.x) #查看函数func的成员x
>>> func() #现在函数func还没有成员x,出错
AttributeError: 'function' object has no attribute 'x'
>>> func.x = 3 #动态为函数增加新成员
>>> func()
3
>>> func.x #在外部也可以直接访问函数的成员
3
>>> del func.x #删除函数成员
>>> func() #删除之后不可访问
AttributeError: 'function' object has no attribute 'x'
- 在有些情况下,可以通过特殊的方式在函数内部修改实参的值。
def modify(v,item):
v.append(item)
a = [2]
modify(a,3)
print(a)
- 也就是说,如果传递给函数的实参是可变序列,并且在函数内部使用下标或可变序列自身的方法增加、删除元素或修改元素时,实参也得到相应的修改。
def modify(d):
d['age'] = 38
a = {'name':'Dong','age':30,'sex':'Male'}
modify(a)
print(a)
##输出:{'name': 'Dong', 'age': 38, 'sex': 'Male'}
- 默认值参数
def say(message,times = 1):
print(message * times)
say('hello')
##输出:hello
say('hi',7)
##输出:hihihihihihihi