函数的作用
函数的作用:就是将实现某一个功能的代码封装到一个称为‘函数’的模块之中
定义函数
在Python之中使用 def
关键字来定义,当函数执行完的时候应当使用return
关键字来返回一个结果
例如:
# n以内的和
def my_sum(n):
"""
求n以内的和
:param n: 非负整数
:return: n以内的和
"""
if n == 1:
return 1
else:
return n + my_sum(n-1)
a = int(input('a = )')
# 直接使用函数而不需要在写循环
print(my_sum(a))
函数的参数
在Python之中函数的参数可以是一个也可以是不确定个数,该参数可以赋默认值也可以不赋默认值
def foo(n=2):
"""
计算n的n次幂
:param n: 非负整数
:return: n的n次幂
"""
return n ** n
print(foo())
print(foo(3))
def foo(*args):
total = 0
for val in args:
total += val
return total
print(foo(1,2,3,4))
print(foo(1,2,3,4,5))
模块调用函数
在使用模块调用函数的时候,如果出现相同的函数名应当使用该模块加点使用函数,否则会被覆盖
l1.py
def foo():
print('ljl')
l2.py
def foo():
print('zy')
import l1
import l2
l1.foo()
# 输出 ljl
l2.foo()
# 输出 zy
如果你这样使用:
from l1 import foo
from l2 import foo
foo()
# 输出 zy
from l2 import foo
from l1 import foo
foo()
# 输出 ljl
if name == 'main': 的使用规则:
可以将需要在本Python运行的函数放在其中,那么在运行本页面的Python文本的时候才会运行到该函数
练习题
1.判断一个数是不是素数
def is_prime(num):
for x in range(2, num):
if num % x == 0:
return False
return True if num != 1 else False
2.判断一个数是不是回文数
def is_palindrome(num):
temp = num
total = 0
while temp > 0:
total = total * 10 + temp % 10
temp //= 10
return total == num
3.公约数
def gcd(x, y):
if x > y:
return gcd(y, x)
elif y % x == 0:
return x
else:
return gcd(y % x, x)
Python变量作用域有
Local - Enclosed - Global - build_in
如果想改变搜索范围 可以使用global和nonlocal关键字
def foo():
# local variable
# 函数内的局部变量 离开foo函数变量a是无法访问的
global a # 定义一个全局的a
a = 200
b = 'hello'
def bar():
nonlocal b
b = 'good'
print(a, end=' ')
print(b, end=' ')
bar()
print(b, end=' ')
foo()
print(a, end=' ')
"""
输出结果为:200 good good 200
"""
在实际开发之中我们应当避免使用全局变量,减少全局变量意味着我们可以将变量放在函数之中使用,所以我们在使用的时候应当如下定义:
def main():
pass
if __name__ == '__main__':
main()