❤️💕💕
python
是一种动态的解释形语言,由于python
的普遍性,学会python
能更快的解决问题,以及学习其他的知识。Myblog:http://nsddd.top
[TOC]
python函数相对于其他的编程语言来说就很简单了
函数是一段代码,只有在被调用时才会运行。
您可以将数据(称为参数)传递给函数。
函数可以返回数据作为结果。
要调用函数,请使用函数名称后跟括号:
def my_function():
print("Hello from a function")
my_function()
默认参数
In [5]: def my_function(fname,lname):
...: print(fname + " " + lname)
...:
In [6]:
In [6]: my_function("Emil","Refsnes")
Emil Refsnes
如果你只是用到了一个参数,那么会报错:
In [6]: my_function("Emil","Refsnes") Emil Refsnes In [7]: my_function("Emil") --------------------------------------------------------------------------- TypeError Traceback (most recent call last) Input In [7], in <cell line: 1>() ----> 1 my_function("Emil") TypeError: my_function() missing 1 required positional argument: 'lname'
如果您不知道将传递给函数*
的参数数量,请在函数定义中的参数名称前添加一个*
。
这样,该函数将接收一个参数元组,并可以相应地访问这些项目:
如果参数数量未知,*
请在参数名称前添加:
In [8]: def my_function(*kids):
...: print("The youngest child is " + kids[2])
...:
...: my_function("Emil", "Tobias", "Linus")
The youngest child is Linus
In [9]: def my_function(*kids):
...: print("The youngest child is " + kids[2])
...:
...: my_function("Emil", "Tobias")
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
您还可以使用key = value语法发送参数。
这样,参数的顺序就无关紧要了。
In [11]: def my_function(child3, child2, child1):
...: print("The youngest child is " + child3)
...:
In [12]: my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
The youngest child is Linus
如果您不知道将传递给函数的关键字参数的数量,请**
在函数定义中的参数名称之前添加两个星号:
这样,函数将接收参数字典,并可以相应地访问项目:
In [13]: def my_function(**kid):
...: print("His last name is " + kid["lname"])
...:
In [14]: my_function(fname = "Tobias", lname = "Refsnes")
His last name is Refsnes
当你传入的是python的数据结构而不是某一个数字,用任意关键字参数或许是一个很好的办法
以下示例显示如何使用默认参数值。
如果我们调用不带参数的函数,它使用默认值:
In [15]: def my_function(country = "Norway"):
...: print("I am from " + country)
...:
In [16]: my_function("smile")
I am from smile
In [17]: my_function()
I am from Norway
In [18]: my_function("bell,email:[email protected]")
I am from bell,email:3293172751@qq.com
您可以将任何数据类型的参数发送给函数(字符串、数字、列表、字典等),它将在函数内部被视为相同的数据类型。
例如,如果你发送一个 List 作为参数,当它到达函数时它仍然是一个 List:
In [19]: def my_function(food):
...: for x in food:
...: print(x)
...:
In [20]: fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
In [21]: my_function(fruits)
apple
banana
cherry
kiwi
mango
要让函数返回值,请使用以下return
语句:
In [26]: def my_function(x):
...: return 5 * x
...:
In [27]: my_function(132)
Out[27]: 660
In [28]: my_function(0)
Out[28]: 0
In [29]: my_function(-10)
Out[29]: -50
function
定义不能为空,但如果您出于某种原因有一个function
没有内容的定义,请放入pass
语句以避免出错。
In [34]: def myfunction2():
...: pass
...:
...:
In [35]: my_function2(1)
Python 还接受函数递归,这意味着定义的函数可以调用自身。
递归是一个常见的数学和编程概念。这意味着一个函数调用自己。这样做的好处是,您可以遍历数据以得出结果。
开发人员应该非常小心递归,因为很容易陷入编写一个永不终止的函数,或者一个使用过多内存或处理器能力的函数。但是,如果编写正确,递归可能是一种非常有效且数学上优雅的编程方法。
在此示例中,tri_recursion()是我们定义为调用自身(“recurse”)的函数。我们使用k变量作为数据,每次递归时都会递减( -1 )。当条件不大于0时(即为0时)递归结束。
在递归中,一定要设置一个出口!
对于新开发人员来说,可能需要一些时间来弄清楚它是如何工作的,最好的方法是测试和修改它。
In [37]: def tri_recursion(k):
...: if(k > 0):
...: result = k + tri_recursion(k - 1)
...: print(result)
...: else:
...: result = 0
...: return result
...:
In [38]: tri_recursion(6)
1
3
6
10
15
21
上面的递归可以理解为函数入栈,先进后出,事实上也是这样,在操作系统中我们学习到程序产生中断,当前的软件和硬件保存当前的状态,然后后面恢复程序,我们以为的顺序是下降的,实际上是上升的。
lambda 函数是一个小的匿名函数。
一个 lambda 函数可以接受任意数量的参数,但只能有一个表达式。
lambda arguments : expression
将 10 添加到参数a
,并返回结果:
In [39]: x = lambda a : a + 10
...: print(x(5))
15
In [40]: x = lambda a : a + 10
In [41]: x(1)
Out[41]: 11
In [42]: x(2)
Out[42]: 12
In [43]: x(x(3))
Out[43]: 23
前面很容易理解,我们看下后面调用
x(x(3))
:x(3)
= 3 + 10 = 13
x(13)
= 13 + 10 = 23
匿名函数可以有多个参数
In [46]: x = lambda a,b,c : a * b * c
In [47]: x(2,3,4)
Out[47]: 24
-
✴️版权声明 © :本书所有内容遵循CC-BY-SA 3.0协议(署名-相同方式共享)©