当前位置: 首页 > news >正文

python——函数

目录

1、函数定义

2、函数类型

(1)无参数无返回值函数 

(2)有参数无返回值函数

(3)无参数有返回值函数

(4)有参数有返回值函数

 3、函数的参数的类型

(1)参数位置

(2)默认值函数

(3)可变参数

(4)关键字参数

4、变量的作用域

(1)局部变量

(2)全局变量

5、实例 

例1:编写函数可以用来计算1-n的和

 例2:实现计算器各种功能: + - * /  **

 例3:计算图形面积,提前要实现登录功能。

1、函数定义

函数是组织好的,可以重复使用的,用来实现特定功能的代码块。类似:mysql中存储过程。

语法:

def   函数名称([函数参数])         #  中括号中内容是可选的

        函数体                                        #  注意代码缩进

说明:

  1. 函数名称属于标识符,要遵守python标识符命名规范;
  2. 函数定义时候,可以有参数,也可以没有参数,根据需求来定;
  3. 函数的内容就是函数体,代码一定要缩进。

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()

 

 


http://www.mrgr.cn/news/99266.html

相关文章:

  • 【C++篇】string类的终章:深浅拷贝 + 模拟实现string类的深度解析(附源码)
  • SQL Server基础
  • Python+Word实现周报自动化的完整流程
  • 【22】Strongswan sa ——IKE_SA task_manager_v1
  • 计算机组成与体系结构:内存接口(Memory Interface)
  • (五)机器学习---决策树和随机森林
  • Kubernetes集群超配节点容量
  • el-select+vue-virtual-scroller解决数据量大卡顿问题
  • 深度学习3.5 图像分类数据集
  • Ubuntu下展锐刷机工具spd_dump使用说明
  • Transformer中Post-Norm和Pre-Norm如何选择?
  • 机器学习-08-推荐算法-案例
  • 《相对论中相对性原理的实验验证与分析》
  • 开源脚本分享:用matlab处理ltspice生成的.raw双脉冲数据
  • 若依框架免登陆、页面全屏显示、打开新标签页(看板大屏)
  • 从规则到大模型:知识图谱信息抽取实体NER与关系RE任务近10年演进发展详解
  • 单页面应用的特点,什么是路由,VueRouter的下载,安装和使用,路由的封装抽离,声明式导航的介绍和使用
  • 剑指Offer(数据结构与算法面试题精讲)C++版——day17
  • Transformer系列(三):编码器—解码器架构
  • GAIA-2:用于自动驾驶的可控多视图生成世界模型