1、什么是函数?
函数就是一种工具,可以重复调用。
2、为什么要用函数?
1、防止代码冗余
2、代码的可读性差
3、怎么用函数?
1、定义函数 >>> 制造工具
2、调用函数 >>> 使用工具
1、无参函数:
def index()
print("ok")
2、空函数:
def login()
pass
3、有参函数:
def login(username):
print(username)
函数的参数:
参数的类型:
形参:
实参:
传参方式:
位置参数
关键字参数
默认参数
可变长参数:
*args:接收所有溢出的位置参数
**kwargs:接收所有溢出的关键字参数
*:放到实参中就是打散
形参:是在函数定义阶段就规定的参数,它就相当于定义变量时的变量名
实参:是在函数调用阶段传入的参数,它相当于定义变量时的变量值。
python代码从上到下依次执行
默认参数:
在定义函数阶段就已经传入参数
如果说你在实参的时候传入了一个新的参数,就会使用新参数
默认参数在传值的时候,不要将可变类型()当做参数传递
可变与不可变类型
可变类型(mutable):列表,字典
不可变类型(unmutable):数字,字符串,元组
定义函数
def greet_user():
print("hello")
greet_user()
这是最简单的定义函数
前面定义函数
def greet_user(username):
print("hello," + username.title() + "!")
greet_user("jesse")
运行结果:hello,Jesse!
pets.py
def describe_pet(animal_type,pet_name):
print(" i have a"+ animal_type + ".")
print("my"+ animal_type + "'s name is " + pet_name.title() + ".")
describe_pet("hamater","harry")
调用的时候,用关键字来调用,看下例子:
def describe_pet(animal_type,pet_name):
print(" i have a " + animal_type + ".")
print("my "+ animal_type + "'s name is " + pet_name.title() + ".")
describe_pet(animal_type="hamater",pet_name="harry")
animal_type="hamater", pet_name="harry",这两个就是关键字实参,务必准确地指定函数定义中的形参名。
默认参数
def reg(username,password,gender="male"):
print(f"用户名:{username},密码:{password},性别:{gender}")
reg("zc","nice")
reg("zc","nice")
可变长参数:
*args:接收所有溢出的位置参数
接收的值都被存入一个元组
官方认证:*args
只要有*就有可变长参数的效果 *打散你传入容器类型
**kwargs:接收所有溢出的关键字参数
接收的值都被存入一个字典
官方认证:**kwargs