香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

详解Python中的各种函数的使用


时间:2021-12-08 14:47 作者:admin610456


函数是有组织的,可重复使用的代码,用于执行一个单一的,相关的动作的块。函数为应用程序和代码重用的高度提供了更好的模块。

正如我们知道的,python/' target='_blank'>python的print()等许多内置函数,但也可以创建自己的函数。这些函数称为用户定义函数。
定义一个函数

可以定义函数,以提供所需的功能。下面是简单的规则来定义Python函数。

函数块以开始关键字def后跟函数名和括号中(())。 任何输入参数或参数应该放在这些括号内。还可以定义这些括号内的参数。 函数的第一个语句可以是??一个可选的声明 - 该函数或文档字符串的文档字符串。 每个函数中的代码块以冒号(:)开头并缩进。 该语句返回[表达式]退出功能,可选地传递回一个表达式给调用者。不带参数return语句返回None。

语法:

def functionname( parameters ):  "function_docstring"  function_suite  return [expression]

默认情况下,参数具有一个位置的行为和需要,它们被定义为通知他们以相同的顺序。
例子:

这是最简单的Python函数形式。这个函数接受一个字符串作为输入参数,并打印标准的屏幕上。

def printme( str ):  "This prints a passed string into this function"  print str  return

调用函数

定义一个函数只给出它的名称,指定要被包括在功能和结构的代码块的参数。

一旦函数的基本结构确定后,可以通过从其他函数或直接从Python提示符调用它执行它。以下是示例调用printme()函数:

#!/usr/bin/python# Function definition is heredef printme( str ):  "This prints a passed string into this function"  print str;  return;# Now you can call printme functionprintme("I'm first call to user defined function!");printme("Again second call to the same function");

当执行上面的代码中,产生以下结果:

I'm first call to user defined function!Again second call to the same function

引用VS值传递

所有参数(参数)在Python语言是通过引用传递。这意味着,如果你在一个函数中改变了一个参数的值,变化也反映了在调用函数中。例如:

#!/usr/bin/python# Function definition is heredef changeme( mylist ):  "This changes a passed list into this function"  mylist.append([1,2,3,4]);  print "Values inside the function: ", mylist  return# Now you can call changeme functionmylist = [10,20,30];changeme( mylist );print "Values outside the function: ", mylist

这里,我们保持传递的对象的参考,并在同一个对象附加的值。这样,这将产生以下结果:

Values inside the function: [10, 20, 30, [1, 2, 3, 4]]Values outside the function: [10, 20, 30, [1, 2, 3, 4]]

还有就是参数通过引用传递和引用被覆盖在被调用的函数里面一个例子。

#!/usr/bin/python# Function definition is heredef changeme( mylist ):  "This changes a passed list into this function"  mylist = [1,2,3,4]; # This would assig new reference in mylist  print "Values inside the function: ", mylist  return# Now you can call changeme functionmylist = [10,20,30];changeme( mylist );print "Values outside the function: ", mylist

参数myList上局部函数changeme。更改函数内mylist不影响mylist。函数没有作用,最后这会产生以下结果:

Values inside the function: [1, 2, 3, 4]Values outside the function: [10, 20, 30]

函数参数:

可以通过使用形参的类型如下调用函数:

必需的参数 关键字参数 默认参数 可变长度参数

必需的参数:

所需的参数为传递给正确的位置顺序的函数的参数。这里,在函数调用的参数的数目应与函数定义完全匹配。

调用函数printme(),一定要传递一个参数,否则会如下给出一个语法错误:

#!/usr/bin/python# Function definition is heredef printme( str ):  "This prints a passed string into this function"  print str;  return;# Now you can call printme functionprintme();

当执行上面的代码,产生以下结果:

Traceback (most recent call last): File "test.py", line 11, in <module>  printme();TypeError: printme() takes exactly 1 argument (0 given)

关键字参数:

关键字参数是关系到函数调用。当在一个函数调用中使用关键字参数,调用者通过参数名称标识的参数。

这可以跳过参数或脱离顺序,因为Python解释器能够使用提供的参数使用匹配的值的关键字。还可以使关键字调用在以下方面printme()函数:

#!/usr/bin/python# Function definition is heredef printme( str ):  "This prints a passed string into this function"  print str;  return;# Now you can call printme functionprintme( str = "My string");

当执行上面的代码中,产生以下结果:

My string

下面的例子给出了更清晰的画面。请注意,这里跟参数秩序没有关系。

#!/usr/bin/python# Function definition is heredef printinfo( name, age ):  "This prints a passed info into this function"  print "Name: ", name;  print "Age ", age;  return;# Now you can call printinfo functionprintinfo( age=50, name="miki" );

当执行上面的代码,产生以下结果:

Name: mikiAge 50

默认参数:

默认参数是,假设一个默认值,如果不提供的函数调用的参数值的参数。下面的例子给出了默认参数一个主意,它会默认打印age,如果不通过传值:

#!/usr/bin/python# Function definition is heredef printinfo( name, age = 35 ):  "This prints a passed info into this function"  print "Name: ", name;  print "Age ", age;  return;# Now you can call printinfo functionprintinfo( age=50, name="miki" );printinfo( name="miki" );

当执行上面的代码,产生以下结果:

Name: mikiAge 50Name: mikiAge 35

可变长度参数:

可能需要处理函数比在定义函数指定多个参数。这些参数被称为可变长度参数,在函数定义没有被命名,不像必需默认参数。

非关键字可变参数的函数的一般语法是这样的:

def functionname([formal_args,] *var_args_tuple ):  "function_docstring"  function_suite  return [expression]

星号(*)被放置,将持有的所有非关键字变量参数的值在变量名前。该元组保持为空,如果函数调用期间没有指定任何其他参数。下面是一个简单的例子:

#!/usr/bin/python# Function definition is heredef printinfo( arg1, *vartuple ):  "This prints a variable passed arguments"  print "Output is: "  print arg1  for var in vartuple:   print var  return;# Now you can call printinfo functionprintinfo( 10 );printinfo( 70, 60, 50 );

当执行上面的代码,产生以下结果:

Output is:10Output is:706050

匿名函数:

可以使用lambda关键字来创建小的匿名函数。这些函数被称为匿名,因为它们不是以标准方式通过使用def关键字声明。

Lambda形式可以采取任何数量的参数,但在表现形式上只返回一个值。它们不能包含命令或多个表达式。 匿名函数不能直接调用打印,因为需要lambda表达式。 lambda函数都有自己的命名空间,并且不能访问变量高于在其参数列表和那些在全局命名空间等。 尽管似乎lambda是一个函数的单行版本,它们不是在C或C++,其宗旨是通过调用出于性能原因在传递函数的堆栈分配相当于一行的声明。

语法

lambda函数的语法仅包含单个语句,如下:

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

以下为例子来说明函数lambda形式是如何工作的:

#!/usr/bin/python# Function definition is heresum = lambda arg1, arg2: arg1 + arg2; # Now you can call sum as a functionprint "Value of total : ", sum( 10, 20 )print "Value of total : ", sum( 20, 20 )

当执行上面的代码,产生以下结果:

Value of total : 30Value of total : 40

return语句:

该语句返回[表达式]退出功能,可选地传递回一个表达式给调用者。不带参数return语句返回None。

以上所有的例子都没有返回任何值,但如果喜欢,可以从一个函数返回值:

#!/usr/bin/python# Function definition is heredef sum( arg1, arg2 ):  # Add both the parameters and return them."  total = arg1 + arg2  print "Inside the function : ", total  return total;# Now you can call sum functiontotal = sum( 10, 20 );print "Outside the function : ", total 

当执行上面的代码,产生以下结果:

Inside the function : 30Outside the function : 30

变量的作用域:

程序中的所有变量可能不会在该程序中的所有位置进行访问。这取决于所声明的变量。

变量的作用域确定了程序,可以访问一个特定的标识符的一部分。在Python中的变量两个基本范畴:

全局变量 局部变量

全局与局部变量:

这是一个函数体内部定义的变量具有局部范围,而那些之外定义具有全局范围。

局部变量只能在函数内部被声明和访问,而全局变量可以在整个程序主体由所有函数进行访问。当调用一个函数,它里面声明的变量都纳入范围。下面是一个简单的例子:

#!/usr/bin/pythontotal = 0; # This is global variable.# Function definition is heredef sum( arg1, arg2 ):  # Add both the parameters and return them."  total = arg1 + arg2; # Here total is local variable.  print "Inside the function local total : ", total  return total;# Now you can call sum functionsum( 10, 20 );print "Outside the function global total : ", total 

当执行上面的代码,产生以下结果:

Inside the function local total : 30Outside the function global total : 0

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)