函数的作用
写代码忌讳的是重复,当有重复的代码块出现时,可以使用函数
对代码块进行封装,使得重复部分只用一个函数就能实现,比如我们要计算cc
3!*4!*5!
ok,一般我们可以写成:
a = 3
b = 4
c = 5
r = 1
for i in range(1,a+1):
r *= i
p = 1
for i in range(1,b+1):
p *= i
q = 1
for i in range(1,c+1):
q *= i
print(r*p*q)
对,三个一样的阶乘计算代码,相当麻烦,所以我们只需将重复的代码封装到一个函数即可。
def factorial(num):
r = 1
for i in range(1,num+1):
r *= i
return r
那么3,4,5的阶乘的乘积:
factorial(3)*factorial(4)*factorial(5)
是不是相当简单。
定义函数
这里我们将阶乘的代码块定义为factorial
,括号内是我们需要传入的参数,return
是将结果输出。函数的命名规则与变量的命名规则相同。
函数参数
当然,这里我们将参数定义为一个需要传入的变量,我们也可以直接将参数固定:
def parameter(a=3,b=4):
print(a+b)
parameter()
parameter(4)
parameter(4,8)
结果是7,8,12.
当没有参数传入时,使用的是默认参数。
参数的设置还有一个更'懒'的方法。
直接定义为*args
这表示传入的参数是可变参数,可以是0个也可以是多个。
当然,如果这种方式被滥用的话,还是蛮恶心的。
变量作用域
def foo():
b = 'hello,world'
def bar():
global a
print(a)
a = 300
print(a)
print(b)
bar()
if __name__=='__main__':
a =100
print('a:',a)
foo()
结果是
a: 100
100
300
hello,world
当global
被删掉时,就会报错UnboundLocalError: local variable 'a' referenced before assignment
因为原来a就是全局变量,如果你修改,就会变成局部变量,所以可以先声明一下a的作用域。
网友评论