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

python函数的定义与使用

函数的定义与使用

函数的定义与调用
def a():
    print("hello")
a()

当前版本可以定义在调用后面
a(
def a():
    print("hello"
          
此处的r为传参,可以使用get_area(10)来传参,使用return返回值
def get_area(r):
    return r*r	#返回面积
print(get_area(10))		#此处的返回值需要赋值给变量或者直接输出
>>>100
接着上面的代码,当我们没有传参的时候,则回显为None
print(get_area())

函数的实际参数
1.调用函数时,实际传入的参数叫做实参
实参分为两类:
	1)位置参数
    def get_area(h,r):	#定义三角形的底和高
        return h*r/2
    get_area(3,4)	h=3  r=4	#实参的先后顺序不能颠倒
    ger_area(4,3)	h=4	 r=3	#先后顺序要和形参一致
    2)赋值参数
	使用赋值参数,此时参数先后顺序无所谓
    def get_area(h,r):	#还是这串代码
        return h*r/2
    get_area(r=3,h=4)	#此时顺序不影响实际传参
参数值的类型
#在调用函数时,要把实参传给形参。如果实参是简单的数据类型(如数值型、字符串等)这时是传值,就是把实参的值赋值给形参
#如果实参是组合数据类型(如列表、元组、字典等),这是是传址,就是把实参地址传递给形参
#如果是传值,改变形参对实参没有任何影响。如果是传址,形参的改变会导致实参随之改变
形式参数
#在定义函数时,可以有形式参数,简称为形参。形参可以有0个1个或多个,没有个数限制
#如果一个形参有值,就称为默认参数。注意默认参数要放在位置参数的后面
def persion(name,sex="男"):	#有默认值的参数要放在没有值的形参后面
    print(name)
    print(sex)
persion("zhangsan","女")		#如果不定义sex这个形参那么sex的输出值默认为男
>>>zhangsan
>>>
形参的可变长度参数
#定义函数时,形参可以是一个元组或字典等长度不定的参数。注意:如果同时出现了元组和字典,要把字典写在元组后面
#当不给元组赋值时,这里不会报错,因为不传参则认为是空元组和空字典
def student(name,sex="男",*tuple1,**dict1):
    print(name)
    print(sex)
    for i in tuple1:
        print(i)
    for key,value in dict1.items():
        print(f"{key}={value}")
student("zhangsan")
>>>zhangsan
>>>男
student("lisi","女")
>>>lisi
>>>女
student("wangwu","男","河北","123456")
>>>wangwu
>>>>>>河北
>>>123456
student("赵六","男","河北",address="石家庄",tel="13261634016")		#此处的a=b代表了字典
>>>赵六
>>>>>>河北
>>>address=石家庄
>>>tel=13261634016
函数的返回值
python函数中可以使用return表达式返回一个值,如果省略表达式甚至省略return关键字表示返回一个None值
一个函数永远有返回值,none也是返回值,none不是空也不是0,none就是none
None0、空字符串、空列表、空元组、空字典、空集合都不相等
print(None==None)
>>>True
变量作用域
根据作用域不同,变量大致分为全局变量和局部变量
定义在函数内部的是局部变量,另外,函数形参也是局部变量
定义在函数外部的变量是全局变量
全局变量定义后,可以被后面的代码访问,只有程序结束退出python,全局变量才会消失
局部变量在定义后,只能在函数体被访问,函数执行结束,局部变量自动消失,不能再次访问
如果在函数中定义的局部变量和全局变量同名,则自动掩盖全局变量
注意:全局变量可以在函数内读取,但不可改变,如果试图修改全局变量的话会报错
global关键字
#为了在函数内部能读写全局变量,python提供global语句在函数内部修改全局变量
a=10
def exam():
    global a
    a = 5
    print(a)
exam()
print(a)
>>>5
>>>5
python内置函数
函数名用途示例
abs()返回数值的绝对值abs(-2) → 2
abs(3.77) → 3.77
divmod()返回两个数相除的商和余数组成的元组divmod(10,3) → (3, 1)
max()返回可迭代对象中的最大值(支持数字、字符串)max(-1,1,2,3,4) → 4
max('abcef989') → 'f'
min()返回可迭代对象中的最小值min(-1,12,3,4,5) → -1
pow()计算幂运算(可附加取模运算)pow(2,3) → 8
pow(2,3,5) → 3(即 8 % 5
round()对数值进行四舍五入(可指定保留小数位数)round(1.456778) → 1
round(1.45677, 2) → 1.46
sum()计算可迭代对象的数值总和(可指定起始值)sum((1,2,3,4)) → 10
sum((1,2,3,4), -10) → 0
数据类型转换函数
函数描述
int(x)将x转换为整数类型
float(x)将x转换为浮点类型
str(x)将x转换为字符串
chr(x)将x转换为转化为一个字符
ord(x)将字符x转换为其对应的整数值
hex(x)将一个则行数x转化为一个十六进制的字符串
oct(x)将一个整数x转化为一个八进制字符串
bin(x)将一个整数x转换为一个二进制字符串
序列操作函数
函数名功能说明示例
all()判断可迭代对象中的所有元素是否均为 True 值(非零、非空、非False等)all([True, 1, "abc"]) → True
all([True, 0, ""]) → False
any()判断可迭代对象中是否存在至少一个 True 值的元素any([False, 0, ""]) → False
any([False, 1, ""]) → True
range()生成一个整数序列(默认从0开始)range(5) → 0,1,2,3,4
range(2,5) → 2,3,4
map()对可迭代对象中的每个元素应用指定函数,返回新迭代器list(map(lambda x: x*2, [1,2,3])) → [2,4,6]
filter()根据条件函数过滤可迭代对象中的元素,返回符合条件的迭代器list(filter(lambda x: x>0, [-1,0,1])) → [1]
reduce()对可迭代对象中的元素进行累积计算(需从 functools 导入)from functools import reduce
reduce(lambda a,b: a+b, [1,2,3]) → 6
zip()将多个可迭代对象的对应位置元素组合成元组,返回迭代器list(zip([1,2], ["a","b"])) → [(1, 'a'), (2, 'b')]
sorted()对可迭代对象进行排序,返回新列表(原对象不变)sorted([3,1,2]) → [1,2,3]
sorted("cba") → ['a','b','c']
reversed()反转序列(如列表、字符串),返回迭代器list(reversed([1,2,3])) → [3,2,1]
''.join(reversed("abc")) → "cba"
enumerate()将一个可迭代对象中的元素及其索引组合成枚举对象,便于在循环中同时获取索引和值list(enumerate([‘a’, ‘b’, ‘c’])) → [(0, ‘a’), (1, ‘b’), (2, ‘c’)] for index, value in enumerate([‘a’, ‘b’, ‘c’]): print(index, value) → 0 a、1 b、2 c

相关文章:

  • Docker Harbor
  • 连表查询的时候,子查询的条件应该写到子查询里面,不能放到外面
  • 大模型在网络安全领域的七大应用
  • qml之锚点Anchors
  • Google Cloud Next‘25大会 Gemini 支持 Anthropic MCP 协议及推出 A2A 协议剑指医疗AI情况分析
  • QBitmap、QPixmap、QImage 和 QPicture 使用方法和特点以及转换
  • Windows10 ssh无输出 sshd服务启动失败 1067报错 公钥无法认证链接 解决办法
  • Android 中绕过hwbinder 实现跨模块对audio 的HAL调用
  • Java面试黄金宝典45
  • POSIX线程(pthread)库:线程的终止与管理
  • C#异步方法返回Task<T>的同步调用
  • LLM相关代码笔记
  • 【Docker基础】容器技术详解:生命周期、命令与实战案例
  • Java网络编程实战(多人聊天室-CS模式)
  • ollama加载本地自定义模型
  • 在 Linux 系统(ubuntu/kylin)上安装 Docker
  • 玻璃厂退火炉“温度智囊”:Profinet转ModbusRTU网关
  • 目标检测YOLO实战应用案例100讲- 基于卷积神经网络的小目标检测算法研究与应用
  • 灵霄破茧:仙途启幕 - 灵霄门新篇-(4)
  • linux环境定时重启服务的流程分享