Python 函数
-
Python 函数
函数是仅在调用时运行的代码块。您可以将数据(称为参数)传递给函数。函数可以返回数据。 -
创建一个函数
在Python中,使用 def 关键字定义函数:循环浏览“banana”一词中的字母:def my_function(): print("Hello from a function")
-
-
参数
信息可以作为参数传递给函数。在函数名称后的括号内指定参数。您可以根据需要添加任意数量的参数,只需用逗号分隔即可。以下示例具有一个带有一个参数(fname)的函数。调用该函数时,我们传递一个名字,该名字在函数内部用于打印全名:
尝试一下def my_function(fname): print(fname + " Refsnes") my_function("Emil") my_function("Tobias") my_function("Linus")
-
形参和实参
术语形参和实参都称为参数可用于同一事物:传递给函数的信息。从函数的角度来看:形参是函数定义中括号内列出的变量。实参是调用它时发送给函数的值。
-
参数个数
默认情况下,必须使用正确数量的参数调用函数。这意味着如果您的函数需要2个参数,则必须使用2个参数(不多也不少)来调用函数。该函数需要2个参数:
尝试一下def my_function(fname, lname): print(fname + " " + lname) my_function("Emil", "Refsnes")
如果尝试使用1或3个参数调用该函数,则会收到错误消息:该函数需要2个参数,但只能得到1:
尝试一下def my_function(fname, lname): print(fname + " " + lname) my_function("Emil")
-
任意参数,* args
如果您不知道将传递给您的函数多少个参数,请在函数定义的参数名称前添加一个*。这样,函数将接收一个参数元组,并可以相应地访问各项:如果参数个数未知,请在参数名称前添加一个*:
尝试一下def my_function(*kids): print("The youngest child is " + kids[2]) my_function("Emil", "Tobias", "Linus")
在Python文档中,任意参数通常缩写为*args。
-
key参数
您还可以使用key = value语法发送参数。 这样,参数的顺序无关紧要。
尝试一下def my_function(child3, child2, child1): print("The youngest child is " + child3) my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
在Python文档中,“key参数”通常简称为kwargs。
-
任意key参数,** kwargs
如果您不知道将传递给您的函数多少个key参数,请在函数定义中的参数名称前添加两个星号**:。这样,函数将接收参数字典,并可以相应地访问各项:如果关键字参数的数量未知,请在参数名称前添加一个双星号**:
尝试一下def my_function(**kid): print("His last name is " + kid["lname"]) my_function(fname = "Tobias", lname = "Refsnes")
在Python文档中,任意Kword参数通常缩短为** kwargs。。
-
默认参数值
下面的示例显示如何使用默认参数值。如果调用不带参数的函数,它将使用默认值:
尝试一下def my_function(country = "Norway"): print("I am from " + country) my_function("Sweden") my_function("India") my_function() my_function("Brazil")
-
将列表(list)作为参数传递
您可以将参数的任何数据类型发送到函数(字符串,数字,列表,字典等),它将在函数内部被视为相同的数据类型。例如,如果您将List作为参数发送,则到达函数时仍将是List:
尝试一下def my_function(food): for x in food: print(x) fruits = ["apple", "banana", "cherry"] my_function(fruits)
-
返回值
要让函数返回值,请使用以下 return 语句:
尝试一下def my_function(x): return 5 * x print(my_function(3)) print(my_function(5)) print(my_function(9))
-
pass声明
函数定义不能为空,但是如果由于某种原因您有一个函数不包含任何内容的定义,请在语句中放入pass以避免出错。def myfunction: pass
-
递归
Python 还接受函数递归,这意味着定义的函数可以调用自身。递归是常见的数学和编程概念。这意味着一个函数调用自己。这样做的好处是,您可以遍历数据以获得结果。开发人员在进行递归时应非常小心,因为很容易滑入编写永不终止的函数,或者使用过多内存或处理器能力的函数。但是,如果编写正确,则递归可以是一种非常有效且数学上精巧的编程方法。在此示例中,tri_recursion()是我们已定义为调用自身的函数(“递归”)。我们使用k变量作为数据,每次递归时它都会递减(-1)。当条件不大于0(即当它为0)时,递归结束。对于新开发人员来说,可能需要花费一些时间来确定其工作原理,最好的测试方法是测试和修改它。
尝试一下def tri_recursion(k): if(k>0): result = k+tri_recursion(k-1) print(result) else: result = 0 return result print("\n\nRecursion Example Results") tri_recursion(6)