亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

Python - 函数

上一页下一页

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

如您所知,Python 为您提供了许多内置函数,例如 print() 等,但您也可以创建自己的函数。这些函数称为用户定义函数。

定义函数

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

语法

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

默认情况下,参数具有位置行为,您需要按照定义它们的顺序通知它们。

示例

下面的函数将一个字符串作为输入参数并在标准屏幕上打印出来。

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

调用函数

定义一个函数只是给它一个名字,指定要包含在函数中的参数并构造代码块。

一旦函数的基本结构最终确定,您可以通过从另一个函数调用它或直接从 Python 提示符调用它来执行它。以下是调用 printme() 函数的示例 -

现场演示
#!/usr/bin/python

# Function definition is here
def printme( str ):
   "This prints a passed string into this function"
   print str
   return;

# Now you can call printme function
printme("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

通过引用与值传递

Python 语言中的所有参数(参数)都是通过引用传递的。这意味着如果您更改函数中参数所指的内容,则更改也会反映在调用函数中。例如 -

现场演示
#!/usr/bin/python

# Function definition is here
def 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 function
mylist = [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 here
def 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 function
mylist = [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 here
def printme( str ):
   "This prints a passed string into this function"
   print str
   return;

# Now you can call printme function
printme()

执行上述代码时,会产生以下结果 -

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 here
def printme( str ):
   "This prints a passed string into this function"
   print str
   return;

# Now you can call printme function
printme( str = "My string")

执行上述代码时,会产生以下结果 -

My string

下面的例子给出了更清晰的画面。注意参数的顺序无关紧要。

现场演示
#!/usr/bin/python

# Function definition is here
def printinfo( name, age ):
   "This prints a passed info into this function"
   print "Name: ", name
   print "Age ", age
   return;

# Now you can call printinfo function
printinfo( age=50, name="miki" )

执行上述代码时,会产生以下结果 -

Name:  miki
Age  50

默认参数

默认参数是一个参数,如果在该参数的函数调用中未提供值,则该参数采用默认值。下面的例子给出了一个关于默认参数的想法,如果没有传递,它会打印默认年龄 -

现场演示
#!/usr/bin/python

# Function definition is here
def printinfo( name, age = 35 ):
   "This prints a passed info into this function"
   print "Name: ", name
   print "Age ", age
   return;

# Now you can call printinfo function
printinfo( age=50, name="miki" )
printinfo( name="miki" )

执行上述代码时,会产生以下结果 -

Name:  miki
Age  50
Name:  miki
Age  35

可变长度参数

在定义函数时,您可能需要处理比您指定的参数更多的函数。这些参数称为 variable-length 参数并且不在函数定义中命名,这与必需参数和默认参数不同。

具有非关键字变量参数的函数的语法是这样的 -

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

星号 (*) 放置在包含所有非关键字变量参数值的变量名称之前。如果在函数调用期间未指定其他参数,则此元组保持为空。以下是一个简单的例子 -

现场演示
#!/usr/bin/python

# Function definition is here
def 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 function
printinfo( 10 )
printinfo( 70, 60, 50 )

执行上述代码时,会产生以下结果 -

Output is:
10
Output is:
70
60
50

匿名 函数

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

语法

lambda 的语法 函数只包含一条语句,如下 -

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

以下是显示 lambda 的示例 函数形式起作用 -

现场演示
#!/usr/bin/python

# Function definition is here
sum = lambda arg1, arg2: arg1 + arg2;

# Now you can call sum as a function
print "Value of total : ", sum( 10, 20 )
print "Value of total : ", sum( 20, 20 )

执行上述代码时,会产生以下结果 -

Value of total :  30
Value of total :  40

返回 声明

语句 return [expression] 退出一个函数,可选择将一个表达式传回给调用者。不带参数的 return 语句与 return None 相同。

以上所有示例均未返回任何值。您可以从函数中返回一个值,如下所示 -

现场演示
#!/usr/bin/python

# Function definition is here
def 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 function
total = sum( 10, 20 );
print "Outside the function : ", total 

执行上述代码时,会产生以下结果 -

Inside the function :  30
Outside the function :  30

变量范围

程序中的所有变量可能无法在该程序的所有位置访问。这取决于你在哪里声明了一个变量。

变量的范围决定了您可以访问特定标识符的程序部分。 Python中有两个基本的变量范围 -

全局变量与局部变量

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

这意味着局部变量只能在声明它们的函数内部访问,而全局变量可以在整个程序体中被所有函数访问。当你调用一个函数时,它里面声明的变量被带入作用域。以下是一个简单的例子 -

现场演示
#!/usr/bin/python

total = 0; # This is global variable.
# Function definition is here
def 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 function
sum( 10, 20 );
print "Outside the function global total : ", total 

执行上述代码时,会产生以下结果 -

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

Python

  1. Python 匿名/Lambda 函数
  2. Python 生成器
  3. Python 闭包
  4. Python 装饰器
  5. Stratasys Insight 中的 10 个热门函数
  6. 带有程序示例的 C++ 函数
  7. Python String strip() 函数与示例
  8. 带有示例的 Python Lambda 函数
  9. Python abs() 函数:绝对值示例
  10. 带有示例的 Python round() 函数
  11. 带有示例的 Python map() 函数
  12. Python 教程中的收益:生成器和收益与返回示例