python——函数
目录
1、函数定义
2、函数类型
(1)无参数无返回值函数
(2)有参数无返回值函数
(3)无参数有返回值函数
(4)有参数有返回值函数
3、函数的参数的类型
(1)参数位置
(2)默认值函数
(3)可变参数
(4)关键字参数
4、变量的作用域
(1)局部变量
(2)全局变量
5、实例
例1:编写函数可以用来计算1-n的和
例2:实现计算器各种功能: + - * / **
例3:计算图形面积,提前要实现登录功能。
1、函数定义
函数是组织好的,可以重复使用的,用来实现特定功能的代码块。类似:mysql中存储过程。
语法:
def 函数名称([函数参数]): # 中括号中内容是可选的
函数体 # 注意代码缩进
说明:
- 函数名称属于标识符,要遵守python标识符命名规范;
- 函数定义时候,可以有参数,也可以没有参数,根据需求来定;
- 函数的内容就是函数体,代码一定要缩进。
2、函数类型
以计算器功能为例:
(1)无参数无返回值函数
# 无参数无返回值函数
def add(): # 加法a=1b=1print(f"{a}+{b}={a+b}")
(2)有参数无返回值函数
# 有参数无返回值函数
def sub(a,b): #减法
# a和b是sub函数参数:称为形式参数,简称形参 a和b都是参数名称,遵守python标识符规范print(f"{a}-{b}={a-b}")
函数的功能执行完成以后最终返回给调用方的结果,将这个结果称为函数返回值。函数有返回值通过return关键字来实现,在函数的末尾加上return关键字,在这个关键字后面加上想要返回的结果。python所有函数都有返回值,如果一个函数没有return时候,会隐式调用return None作为返回值,返回值就是None。一般情况下,如果函数执行return语句,函数就会立即返回,函数的调用就会结束,return语句后面语句块不会被执行。
(3)无参数有返回值函数
# 无参数有返回值函数
def divid(): # 除法运算numa = int(input("请输入第一个整数:"))numb = int(input("请输入第二个整数:"))return numa/numb
(4)有参数有返回值函数
# 有参数有返回值函数
def multiple(a,b): # 乘法return a*b
3、函数的参数的类型
(1)参数位置
sub(a,b)中的a,b。调用具有位置参数的函数时,位置参数必须赋值,否则函数调用错误。
(2)默认值函数
# 需求:计算圆面积和圆周长
def circle(r,pai=3.14):print(f"圆面积是{r**2*pai},圆周长{2*pai*r}")
# 调用函数
circle(2) # r=2,pai使用默认值
具有默认值参数的函数,调用时可以使用默认值,可以重新赋值。
(3)可变参数
定义:可变参数就是传入的实参个数是可以变化的。可以是0个实参,1个实参等等实参个数是不确定的。传递多少个,函数就可以接受多少个。
python可变参数:*args习惯写法,也可以写成其他符合python标识符规范的字符。args参数接受的实参,他们会组成一个元组。
(4)关键字参数
定义:关键字参数允许输入0个或者任意含有参数名的参数(参数名=值)。这些关键字参数在函数内部会自动组成一个字典。字典的键就是参数名,键对应的值就是参数的值。
python中关键字参数:习惯写法**kwargs,kwargs可以使用其他符合python标识符规范的字符。
4、变量的作用域
变量的作用域就是变量使用范围。
(1)局部变量
定义:指的是定义在函数内的变量,只能在函数内部使用,出了这个函数是不可以使用的。
(2)全局变量
定义:指的是定义函数外部的变量,整个程序都可以使用。
注意事项:在函数中,局部变量可以引用全局变量,不能对全局变量进行修改。
5、实例
例1:编写函数可以用来计算1-n的和
# 编写函数可以用来计算1-n的和
def sum():a=1b=int(input('请输入一个数:'))if b>=1:print(f"({a}+{b})*{b}/2={(a+b)*b/2}")else:print('请重新输入一个大于1的整数')
sum()
例2:实现计算器各种功能: + - * / **
def add(a,b):return f"{a}+{b}={int(a)+int(b)}"
# 减法
def sub(a,b):return f"{a}-{b}={int(a)-int(b)}"
# 除法
def divid(a,b):return f"{a}/{b}={int(a)/int(b)}"
# 乘法
def multiple(a,b):return f"{a}*{b}={int(a)*int(b)}"# 创建函数,调用其他函数
def run():while True:choice = int(input("请输入您需要的功能:1加法 2减法 3除法 4乘法 5退出系统"))if choice == 1:numa = input("请输入第一个整数:")numb = input("请输入第二个整数:")# 调用加法函数print(add(numa, numb))elif choice == 2:numa = input("请输入第一个整数:")numb = input("请输入第二个整数:")# 调用减法函数print(sub(numa,numb))elif choice == 3:numa = input("请输入第一个整数:")numb = input("请输入第二个整数:")# 调用除法函数print(divid(numa,numb))elif choice == 4:numa = input("请输入第一个整数:")numb = input("请输入第二个整数:")# 调用乘法函数print(multiple(numa,numb))elif choice == 5:print("欢迎下次使用!")breakelse:a = input("您的输入非法,是否重新输入:y是,n否")if a == "n":print("欢迎下次使用!")break# 调用run函数,执行计算器
run()
例3:计算图形面积,提前要实现登录功能。
# 创建函数:计算图形面积
def login():for i in range(3):username=input('请输入用户名:')password=input('请输入密码:')if (username == "admin" and password=="admin123")or(username == "root" and password=="rootroot"):return Trueelse:print(f"用户名或密码错误,您还有{2-i}")else:return Falsedef circle_size(r,pi=3.1415926):return f"{pi}*({r}**2)={pi*(r**2)}"
def rectangle_size(d,h):return f"{d}*{h}={d*h}"
def square_size(d):return f"{d}**2={(d**2)}"
def triangle_size(d,h):return f"({d}*{h})/2={(d*h)/2}"
def parallelogram_size(d,h):return f"{d}*{h}={d*h}"def run():flag = login() # True,Falsewhile flag:choice = int(input("请输入您需要的计算面积的类型:1圆 2长方形 3正方形 4三角形 5平行四边形 6退出系统"))if choice == 1:r = int(input('请输入半径:'))print(circle_size(r,pi=3.1415926))elif choice == 2:d = int(input('请输入底边长:'))h = int(input('请输入高:'))print(rectangle_size(d,h))elif choice == 3:d = int(input('请输入边长:'))print(square_size(d))elif choice == 4:d = int(input('请输入底边长:'))h = int(input('请输入高:'))print(triangle_size(d,h))elif choice == 5:d = int(input('请输入底边长:'))h = int(input('请输入高:'))print(parallelogram_size(d,h))elif choice == 6:print("退出系统!")breakelse:a = input("您的输入非法,是否重新输入:yes是,no否")if a == "no":print("欢迎下次使用!")break
run()