目录
def add(a,b):
print(f"两个数:{a}{b}")
return a+b
result1 = add(1,2)
result2 = add(12,13)
print(result1,result2)
函数的参数
可以不传递参数
def func1():
print("this is func1")
func()
形参和实参
必选参数
默认参数
def func1(name,age,sex):
print(f'my name is {name};my age is {age};sex is {sex}')
func1("sc",18,"f")
对于实参调用
func2("sc",sec="m",age=18)
位置参数或者必选参数,必须放在关键字参数或者默认参数的前面
可变长位置参数
def myargs(*num):
# *num ---> 解包1或1,然后num打包成元组
print(*num)
print(type(num),num)
myargs(1)
myargs(1,2)
myargs(1,2,3)
可变长关键字参数
# **num --> a=1,b=2
def myargs(**num):
# ** ---> 打包成字典形式
print(num)
myargs(a=1,b=2)
myargs(c=1,a=1)
函数的return
return:退出函数,并且返回结果
函数中,代码一旦执行到return就退出,后面就不会执行
如果没有return语句,默认返回none,如果return后面不接任何表达式,也返回NONE
return返回多值
def max_num(x,y):
print("return语句......")
if x > y:
print("return x")
return x
else:
print("return y")
return x,y
print("return ending...")
result = max_num(1,2)
i,j = max_num(12,13)
print(result)
print(i,j)
匿名函数
不需要串讲函数名
函数体只有一个表达式,不用写return,该表达式的结果就是返回值
add = lambda x,y: x+y
print(add(3,2))
add = lambda x,y: x if x>y else y
print(add(3,2))
递归函数
自己调用自己
普通方法
num = 1
n = 5
for i in range(1,n+1):
num *= i
print(num)
递归方法:能不用递归就不用,占用内存,效率低。
def func(n):
if n == 1:
return 1
# print(n)
return n * func(n-1)
print(func(996))
函数的参数传递
本质传递引用
传递不可变数据类型
def func1(x):
print(id(x))
x = 100
print(x)
x = 1
print(id(x))
func1(x)
print(x)
传递可变数据类型
def f(x):
x[0] = 100
print(x)
a = [1,2,3]
f(a)
print(a)
def f(a=[]):
a.append(1)
print(a)
f()
f()
f(a=[13,12])
global 全局变量
x = 13
def f():
global x
x = 17
f()
print(x)
变量名解析
LFGB原则:local enclosing global build-in
def outer():
__name__ = 5
def inner():
x = 4
print(id(x))
print(__name__)
inner()
__name__= 6
outer()
文档注释
def func1():
"""
tsdssd
sdfsdfsd
"""
x = 1
print(x)
print("I am func1.")
x = 13
func1()
内建函数与工厂函数
# print(help(func1))
# print(dir(__builtins__))