Python基础 | 函数

函数的作用

写代码忌讳的是重复,当有重复的代码块出现时,可以使用函数对代码块进行封装,使得重复部分只用一个函数就能实现,比如我们要计算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的作用域。

你可能感兴趣的:(Python基础 | 函数)