当前位置: 首页 > 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()

相关文章:

  • EMQX学习笔记
  • CCF-GESP认证的学习资源与知识点详细指南
  • (mamba_ssm)安装踩坑指南
  • 远程桌面-文件传输
  • ECMAScript
  • STM32——相关软件安装
  • GPU虚拟化实现(一)
  • 矩阵-螺旋矩阵
  • Kafka 如何理解Kafka的高可用
  • 从本地存档到协作开发的Git简单使用
  • 解决go项目构建后不能夸Linux平台的问题
  • 使用IntersectionObserver实现目标元素可见度的交互
  • Franka机器人ROS 2来袭:解锁机器人多元应用新可能
  • [密码学基础]商用密码应用安全性评估(密评):网络安全新风口,高薪紧缺人才必备技能
  • 本地搭建一个简易版本的 Web3 服务
  • 2025年世界职业院校技能大赛实施方案(意见稿)
  • 讯联桌面TV版apk下载-讯联桌面安卓电视版免费下载安装教程
  • 【25软考网工笔记】第三章 局域网(1)CSMA/CD、二进制指数退避算法、最小帧长计算
  • C语言学习记录(16)文件操作7
  • VScode-py环境
  • 中共中央、国务院印发《关于实施自由贸易试验区提升战略的意见》
  • 临清农商行回应监管处罚:系2023年问题,已经进行了整改
  • 消息人士称哈马斯愿与以色列达成长期停火
  • “中国电三之都”江苏丰县成功举办第十五届电动车展览会
  • C909飞机开启越南商业运营
  • 观察|如何推动再保险交易规模上量增加话语权,行业在临港新片区共倡议