
定义是组织好的、可重复使用的、用于执行特定任务的代码块好处代码复用:提高代码复用性减少重复代码。结构清晰:让程序更易读、更易维护。模块化开发:把程序分成若干个小功能便于团队合作。分类内置函数无需要任何操作直接就能使用。print()、type()、range()......模块提供的函数需要导入指定的模块后才能使用。math.sqrt()、math.floor().....自定义函数程序员自己定义的函数Python中的内置函数:https://docs.python.org/zh-cn/3.13/library/functions.htmlPython中的模块:https://docs.python.org/zh-cn/3.13/py-modindex.html基本使用# def 定义函数的关键字(define) # welcome 函数名 def welcome(): print(你好) print(上午好) # 调用函数 welcome()参数的使用def order(num,dish): print(f您点的是{num}份{dish}) order(1,小炒肉) order(2,红糖水)形参提示关闭位置参数调用函数时根据参数在函数定义中出现的顺序把实参的值依次传递给对应的形参注:使用位置参数时不能跳过某个位置的参数去给后面的形参赋值。关键字参数关键字参数:调用函数时通过形参名值的形式传递实参。注意:使用关键字参数时位置参数必须在关键字参数之前。参数重复不行、意外参数不行# 关键字参数 def greet(name, gender, age, height): print(f我叫{name}性别{gender}年龄{age}身高{height}cm) greet(周周, 女, 18, 165) # 位置参数 greet(gender女, name周周, height165, age18) # 关键字参数 greet(name周周, gender女, age18, height165) # 关键字参数 greet(周周, 女, height165, age18) # 混用限制传参方式具体规则:/前边只能用位置参数* 后面只能用关键字参数。注意:/和*同时使用时/ 必须在 * 的前面。# name必须用位置参数 #age、height必须用关键字参数 def greet(name,/, gender,*, age, height): print(f我叫{name}性别{gender}年龄{age}身高{height}cm) greet(周周, 女, age18, height165) greet(周周, gender女, height165, age18)参数默认值定义函数时通过形参名值的形式为参数指定一个默认值。即 可选参数注意:默认参数必须要放在必选参数的后面或者说:某个形参一旦设置了默认值那它后面的所有形参也必须要写默认值!# 没传msg用默认值传了就用传入值覆盖默认值 def greet(name, gender, age, height,msg你好): print(f我叫{name}性别{gender}年龄{age}身高{height}cm) print(f我想说{msg}) greet(周周, 女, age18, height165) greet(周周, 女, 165, 18, hello) greet(周周, gender女, height165, age18, msghello)可变参数可变位置参数、可变关键字参数可以同时使用但必须先写可变位置参数可变位置参数定义函数时在形参名前加*可以接收任意数量的位置参数并打包成一个元组def test1(*args): print(args) test1(张三,男,18,172)可变关键字参数定义函数时在形参名前加**可以接收任意数量的关键字参数并打包成一个字典kwargs只是一个形参名可以随意更改kwargs中存放的是:函数调用时所传入的所有关键字实参kwargs的数据类型是字典# keyword arguments def test2(**kwargs): print(kwargs) test2(name张三,gender男,age18,height172)同时使用# 同时使用 def test3(*args, **kwargs): print(args) print(kwargs) test3(张三,男,age18,height172)与其他类型参数一起用# 同时使用 def test3(a,b,*args,c周周, **kwargs): print(a) print(b) print(args) print(c) print(kwargs) test3(张三,男,看书,学习,c哈哈哈,age18,height172)