Python函数全解析:从定义到调用,一文掌握

创始人
2024-12-17 00:29:20
0 次浏览
0 评论

Python的函数都有哪些?

Python函数

函数是结构化的、可重用的代码段,用于实现单个或相关的函数。

函数可以提高应用程序的模块化和代码的可重用性。
您已经知道Python提供了许多内置函数,例如print()。
但您也可以创建自己的函数,称为用户定义函数。

定义函数

你可以用你想要的函数定义一个函数,以下是简单的规则:

函数代码块以关键字def开头,后跟函数标识符名称和括号()。

任何传入参数和实参都必须用括号括起来。
参数可以在括号中定义。

函数的第一行可以选择使用文档字符串-用于存储函数描述。

函数的内容以冒号开头并缩进。

return[表达式]结束函数并可选择向调用者返回一个值。
不返回任何表达式相当于什么也不返回。

语法

deffunctionname(parameters):"function_docstring"function_suitereturn[表达式]

默认情况下,参数值和参数名称的顺序为函数声明中的定义匹配。

示例

下面是一个简单的Python函数,它将字符串作为输入参数并将其打印到标准显示设备。

示例(Python2.0+)

defprintme(str):"将传入的字符串打印到标准显示"printstrreturn

函数调用

函数定义仅给出函数的名称、定义函数中的参数以及代码块的结构。

完成该函数的基本语法后,您可以通过调用另一个函数或直接从Python提示符来执行它。

以下示例调用printme()函数:

示例(Python2.0+)

#!/usr/bin/python#-*-表示法:UTF-8-*-#defpfunctionrintme(str):"打印任何传入的字符串"printstrreturn#调用函数printme("我想调用一个用户定义的函数!")printme("调用同一个函数一次其他”)

以上示例输出结果:

我想调用用户定义的函数!再次调用同一个函数

传递参数

Python中,类型属于对象,变量没有类型:

a=[1,2,3]a="ronop"

上面的代码中,[1,2,3]是一个列表类型,“Runob”是一个字符串类型,而变量a没有类型,它只是一个对对象的引用(指针)。
它可以是一个List对象,也可以引用一个String对象。

可变和不可变对象

在Python中,字符串、元组和数字是不可变对象,而列表、字典等可以是不可变对象。
修改的。

不可变类型:变量设置为a=5后,又设置为a=10。
这里实际上创建了一个新的int值对象10,记为a,忽略5,它并没有改变a的值,相当于新创建了a。

变量类型:设置变量la=[1,2,3,4],然后设置la[2]=5,改变了listla中第三个元素的值,但la本身并没有移动,仅修改了其部分内部值。

向Python函数传递参数:

不可变类型:类似于C++值传递,例如整数、字符串和元组。
例如,fun(a)只传输a的值,并不影响对象本身。
例如,修改内部fun(a)的值只会修改另一个复制对象,不会影响该对象本身。

变量类型:类似于C++中的移动引用,例如列表和字典。
比如fun(la),la其实是修改后传给它的,外部的fun也会受到影响

Python中的一切都是严格意义上的对象,我们无法决定是传还是传不是值或通过引用它,我们应该讨论传递不可变对象和传递可变对象。

Python传递不可变对象实例

实例(Python2.0+)

#!/usr/bin/python#-*-coding:UTF-8-*-defChangeInt(a):a=10b=2ChangeInt(b)printb#结果为2

实例中有一个int对象2,它指向的变量为b。
通过变量b的值来复制它,其中a和b都指向同一个Int对象,当a=10时,创建一个新的int值对象10,点指向它。

移动可变对象的实例

实例(Python2.0+)

#!/usr/bin/python#-*-coding:UTF-8-*-#可写函数说明defchangeme(mylist):"修改传入的列表值"mylist.append([1,2,3,4])print"函数内部:",mylistreturn#调用更改功能mylist=[10,20,30]changeme(mylist)print"externalfunctionvalue:",mylist

实例中传递给函数的对象和最后添加新内容的对象使用相同的引用,所以输出结果如下:

函数内的值:[10,20,30,[1,2,3,4]]函数外的值:[10,20,30,[1,2,3,4]]

参数

以下是调用函数时可以使用的形参类型:

必选参数

关键字参数

默认参数

可变长参数

必选参数

必选参数必须以正确的顺序传递给作业。
致电时的数量必须与广告时的数量相同。

调用printme()函数时,必须传递参数,否则会出现语法错误:

示例(Python2.0+)

#!/usr/bin/python#-*-coding:UTF-8-*-#可写函数说明defprintme(str):"打印任何传入的字符串"printstrreturn#调用printme函数printme()

上例的结果输出:

Traceback(mostrecentcalllast):File"test.py",line11,inprintme()TypeError:printme()takesexactly1argument(0given)

关键字参数

关键字参数与函数调用密切相关。
函数调用使用关键字parameters来指定传递的参数的值。

使用关键字参数允许以与声明不同的顺序调用函数,因为Python解释器可以将参数名称与参数值进行匹配。

以下示例在调用printme()函数时使用参数名称:

示例(Python2.0+)

#!/usr/bin/python#-*-coding:UTF-8-*-#可写函数说明defprintme(str):"打印任何传入的字符串"printstrreturn#调用printme函数printme(str="Mystring")

输出结果举例上图:

Mystring

下面的示例可以让不重要的关键字参数的排名显示得更加清晰:

示例(Python2.0+)

#!/usr/bin/python#-*-coding:UTF-8-*-#可写函数说明defprintinfo(name,age):"打印任何传入的字符串"print"Name":,"打印姓名"age",agepeturn#调用用printinfo函数printinfo(age=50,name="miki")

上例输出结果:

Name:mikiAge50

默认参数

函数调用时,如果未传递默认参数值,则视为默认,下面的示例将在未传递生存期时打印默认生存期:

示例。
(Python2.0+)

#!/usr/bin/python#-*-coding:UTF-8-*-#可写函数说明defprintinfo(name,age=35):"打印任何传入的string"print"Name:",nameprint"Age",agereturn#调用printinfo函数printinfo(age=50,name="miki")printinfo(name="miki")

结果上面示例的输出:

Name:mikiAge50Name:mikiAge35

可变长度参数

您可能需要一个能够处理比最初声明时更多参数的函数。
这些参数称为变长参数,与上面提到的两个参数不同,它们在声明时不会被命名。
基本语法如下:

deffunctionname([formal_args,]*var_args_tuple):"function_documentationstring"function_suitereturn[expression]

添加星号(*)的变量名称将存储所有未命名的变量参数。
变长参数示例如下:

示例(Python2.0+)

#!/usr/bin/python#-*-coding:UTF-8-*-#函数说明可写defprintinfo(arg1,*vartuple):"打印任何传入参数"print"输出:"printarg1forvarinvartuple:printvarreturn#调用printinfo函数printinfo(10)printinfo(70,60,50)

上例输出结果:

输出:10输出:706050

匿名函数

Python使用lambda创建匿名函数。

lambda只是一个表达式,函数体比def简单“多”。

lambda主体是一个表达式,而不是代码块。
有限逻辑只能封装在lambda表达式中。

lambda函数有自己的命名空间,无法访问其参数列表之外或全局命名空间中的参数。

虽然lambda函数看起来只能写一行,但它并不等同于C或C++中的内置函数,后者的目的是调用小函数而不占用堆栈内存,从而提高运行效率。

语法

lambda函数的语法仅包含一个表达式,如下所示:

lambda[arg1[,arg2,.....argn]]:expression

以下示例:

示例(Python2.0+)

#!/usr/bin/python#-*-coding:UTF-8-*-#Writable职位描述总和=lambdaarg1,arg2:arg1+arg2#调用sum函数print"相加的值为:",sum(10,20)print"相加的值为:"sum(20,20)

输出结果上例中:

增加的值为:30添加的值为:40

返回语句

返回语句[表达式]退出函数并有选择地返回调用者返回的表达式。
没有参数值的return语句不会返回任何内容。
前面的示例没有解释如何返回值。
以下示例将告诉您如何执行此操作:

示例(Python2.0+)

#!/usr/bin。
/python#-*-coding:UTF-8-*-#Writable函数说明defsum(arg1,arg2):#返回两个参数的和。
"Total=arg1+arg2print"函数内部:,"返回总计#调用total函数=sum(10,20)

上面例子的结果:

函数内部:30

变量范围

所有程序变量都是不在哪个位置的访问权限取决于变量设置的位置

变量的作用域决定了你可以访问程序的哪一部分,具体变量的名称如下:

全局变量

局部变量<.p>

定义全局变量和局部变量

函数内部定义的变量具有局部作用域,函数外部定义的变量具有全局作用域

局部变量变量只能在声明它们的函数内部访问,而全局变量可以通过函数访问。
整个程序调用函数时,所有变量名称都在函数内声明,名称将添加到作用域中,如下所示:

示例(Python2.0+)

#!/usr/bin/python#-*-coding:UTF-8-*-total=0#这是局部变量sum#可写函数说明defsum(arg1,arg2):#返回两个参数的和。
"Total=arg1+arg2#total是局部变量这里print"是变量Localinfunction:"totalreturntotal#调用sumfunctionsum(10,20)print"函数外的全局变量:",total

上例输出结果:

函数内的局部变量:30函数外变量的全局性:0

python中类内部的函数可以互相调用吗?

例如可以这样调用:common_func被多个函数调用。
classMyClass:def__init__(self):passdeffunc1(self):#dosomethingselfcommon_func()deffunc2(self):#dosomethingselfcommon_func()defcommon_func(self):passPasspython中类内的函数可以互相调用吗?

python函数有哪些

这还是有点大了。
大的肯定有很多,比如它的艺术功能,或者上面提到的总结,然后还有不同的类型。
热门文章
1
Python编程入门:全面解析Pytho... python的基本语法基本的Python语法如下:1.变量的定义。在编程语言中,...

2
Python字典操作全解析:添加、修改、... &#65279;Pythondict字典基本操作(包括添加、修改、删除键...

3
Python错误处理与异常处理:构建稳定... 2.5错误处理与异常在编程领域,错误处理和异常处理是保证程序稳定性和健壮性的关键...

4
Python数据转换攻略:字符串、列表、... Python字典、字符串及列表的相互转换Python中数据转换的艺术:从字典和字...

5
Python列表相加与求和技巧解析 重温python基础:列表相加的方法(两个list[]加法)今天,我们来看看Py...

6
Python运行快捷键大揭秘:高效操作,... python运行按哪个键运行Python时的快捷键包括Ctrl+Shift+F1...

7
Python字符与数字互转攻略:轻松掌握... python&#160;字符与数字如何转换Python是一种功能强大且结...

8
Python字符串转列表:两种常用方法解... python怎么将字符串转换为列表Python中将字符串转换为列表的方法有多种,...

9
Python字符串转列表:两种常用方法解... python怎么将字符串转换为列表在Python中将字符串转换为列表的方法有很多...

10
Python列表转字符串全攻略:掌握四种... Python列表到字符串–如何在Python中转换列表在Python中,将列表转...