Python函数
2021/11/4 22:15:55
本文主要是介绍Python函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 函数代码块以def关键词开头,后接函数标识符名称和圆括号( )标识符对应的是内存地址
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数
- 函数的第一行语句可以选择性地使用文档字符串-用于存放函数说明
- 函数内容以冒号起始,并且缩进
- return[表达式]结束函数,选择性地返回一个值给调用方。不带表达式地return相当于返回None Python可以return多个值
带参函数
形参和实参
可变对象和不可变对象
- 不可变对象如strings,tuples,numbers,传参数的时候是值传递
- 可变对象如list,dict,传参数的时候是地址传递
不可变对象值传递,所以不影响x,y
可变对象地址传递,所以会直接处理原地址对应的内存,一边做修改,另一边也会被修改,因为两边对应的是同一块内存 (可变对象与不可变对象其它语言也会有类似的,c没有,c直接传的是指针,速度更快)
参数
-
必需参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时一样(必需参数对于所有的语言都有,只要有函数就会有)
-
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为Python解释器能够用参数名匹配参数值。(关键字参数对于所有的三代语言(即面向对象的语言,c++,python,java等)都有)
-
默认参数
在定义函数时,给函数的参数一个默认值,调用函数时,如果没有传递参数,则会使用默认参数。
要求带有默认值的参数放在所有参数的后面(所有语言都是这样要求的)
def shu(a,b,c,d=1):
-
不定长参数
如果需要一个函数处理比当初声明时更多的参数。这些参数叫做不定长参数,不定长参数没有值,和上述的参数不同,声明时不会命名, print( )就是一个不定长参数
加了星号(*)的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组(元组即说明这是一个序列,序列即说明可以进行for循环遍历)。我们也可以不向函数传递未命名的变量。
匿名函数
(18条消息) 关于Python中的lambda,这篇阅读量10万+的文章可能是你见过的最完整的讲解_测试不将就-CSDN博客_lambda
lambda argument_list: expression
- argument_list(参数列表)可以是 ①a, b ②a=1, b=2③*args④ a, b=1, *args 等
- expression(表达式)可以是①1 ②None ③a + b ④sum(a) ⑤1 if a >10 else 0等
sum=lambda x: print(x) sum(100) #输出是100
注:部分Python内置函数接收lamda函数作为参数。
- filter函数。此时lambda函数用于指定过滤列表元素的条件。例如filter(lambda x: x % 3 == 0, [1, 2, 3])指定将列表[1,2,3]中能够被3整除的元素过滤出来,其结果是[3]。
- sorted函数。此时lambda函数用于指定对列表中所有元素进行排序的准则。例如sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))将列表[1, 2, 3, 4, 5, 6, 7, 8, 9]按照元素与5距离从小到大进行排序,其结果是[5, 4, 6, 3, 7, 2, 8, 1, 9]。
- map函数。此时lambda函数用于指定对列表中每一个元素的共同操作。例如map(lambda x: x+1, [1, 2,3])将列表[1, 2, 3]中的元素分别加1,其结果[2, 3, 4]。
- reduce函数。此时lambda函数用于指定列表中两两相邻元素的结合条件。例如reduce(lambda a, b: '{}, {}'.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9])将列表 [1, 2, 3, 4, 5, 6, 7, 8, 9]中的元素从左往右两两以逗号分隔的字符的形式依次结合起来,其结果是'1, 2, 3, 4, 5, 6, 7, 8, 9'。
return语句
return[表达式]语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的retrun语句返回None。
- jisuan函数没有返回值return,所以print(jisuan)出来是None
- Python元组只要有一个元素时,后面要加逗号','
- return可以返回多个值
- return返回的多个值以元组形式输出
- return返回的数据类型可以是不同类型
变量作用域
(18条消息) [Python小记] 通俗的理解闭包 闭包能帮我们做什么?_Rei的博客-CSDN博客_python 闭包
python的作用域一共有4种,分别是:
- L(Local)局部作用域 (全局调用了一个函数,这个函数就是局部)
- E(Enclosing)闭包函数外的函数中 (闭包是指函数里再写的一个函数)
- G(Global)全局作用域 (写的代码,定义的py文件)
- B(Built-in)内建作用域 (只要python一运行,就会有内建)
以L E G B的规则查找,即:在局部找不到,便去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找 绝不允许按照BGEL查找
???在某个范围内,就可以对某个范围进行直接访问,绝不允许跨区域向外访问,不允许不可变类型由外向内访问(只能将外部变量对于内部变量进行值赋值,相当于新建了一块内存,两者之间互不相关)允许可变类型由外向内访问(相当于内部变量在本地声明了一个标识符,标识符不在本地用内存,标识符指向了外部的内存)
Python中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问
当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了(对于的是不可变类型 可变类型不需要)
global 是全局标识符,是当前嵌套的根
如果要修改嵌套作用域(enclosing作用域,外层非全局作用域)中的变量则需要nonlocal关键字
类型转换
序列操作
关于zip( )函数:可以将两个列表组合成一个字典
这篇关于Python函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-30Python中''') 是什么?-icode9专业技术文章分享
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程