当前位置: 首页 > 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中关键字参数:习惯写法**kwargskwargs可以使用其他符合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.xdnf.cn/news/62713.html

相关文章:

  • Unocss 类名基操, tailwindcss 类名
  • 分数线降低,25西电马克思主义学院(考研录取情况)
  • RESTful学习笔记(一)
  • 国产仪器进化论:“鲁般号”基于无人机的天线测试系统
  • 微软Entra新安全功能引发大规模账户锁定事件
  • 【Vue】组件基础
  • Linux系统下docker 安装 redis
  • Mybatis延迟加载、懒加载、二级缓存
  • 统计图表ECharts
  • 2025年世界职业院校技能大赛实施方案(意见稿)
  • 【单片机 C语言】单片机学习过程中常见C库函数(学习笔记)
  • 由Ai生成的Linux 入门到精通学习路径
  • 记录seatunnel排查重复数据的案例分析
  • ESP8266_ESP32 Smartconfig一键配网功能
  • qt 配置 mysql 驱动问题:Cannot load library qsqlmysql;QMYSQL driver not loaded
  • 如何编写单元测试
  • 运维工程师面试总结21/4
  • 前端笔记-Axios
  • 3步拆解Linux内核源码的思维模型
  • 汽车动力转向器落锤冲击试验台
  • Java+nanomsg快速实现去broker的数据通信
  • 2025年最新服务器、中间件安全(面试题)
  • HADOOP 3.4.1安装和搭建(尚硅谷版~)
  • 强化学习系统学习路径与实践方法
  • 随机面试--<二>
  • 1+X: Python程序开发职业技能等级要求(初级)练习资料分享
  • 哈希表的学习
  • 基于RK3588+FPGA+AI YOLO的无人船目标检测系统(一)概述
  • 几何编码:启用矢量模式地理空间机器学习
  • OOA-CNN-LSTM-Attention、CNN-LSTM-Attention、OOA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比