Python 函数

Python 函数

这个教程将介绍Python函数的基础知识,包括它们是什么,它们的语法,它们的主要部分,返回关键字和重要的类型。我们还将看一些Python函数定义的示例。

Python函数是什么

一组相关的断言,用于执行数学、分析或评估操作,被称为函数。一组名为Python能力的声明返回指定的任务。Python函数对于中级编程是必需的,并且很容易定义。函数名遵循与变量名相同的标准。目标是定义一个函数并将特定的经常执行的操作分组起来。我们可以调用函数并重用其中包含的代码块来处理不同的变量,而不是重复创建相同的代码块。

客户定义和内置功能是Python中的两个主要类别的功能。它有助于保持程序的独特性、简洁性和结构性。

Python函数的优势

通过包含函数,我们可以避免程序重复使用相同的代码块。

  • 一旦定义,Python函数可以在程序中的任何位置多次调用。
  • 如果有必要,我们的Python程序可以分解为多个易于遵循的函数。
  • 使用各种参数,我们可以返回尽可能多的输出是Python最重要的成就之一。
  • 然而,调用函数在Python程序中始终会产生开销。

然而,在Python程序中,调用函数一直是开销。

语法

#  An example Python Function
def function_name( parameters ):
    # code block

附带的组件构成了定义能力的特征,如前所述。

  • 能力头的开始由一个名为def的关键字表示。
  • function_name是函数的名称,我们可以用它来区分它与其他函数。我们将在程序中稍后使用这个名称来调用这个能力。在Python中,命名函数必须遵循与命名变量相同的准则。
  • 使用参数,我们为定义的函数提供参数。然而,它们是可选的。
  • 冒号(:)标记函数头的结束。
  • 我们可以使用一个名为docstring的文档字符串来解释函数的目的。
  • 函数体由几个有效的Python语句组成。整个代码块的缩进深度(通常是四个空格)必须相同。
  • 返回表达式可以从定义的函数获取一个值。

用户定义函数的示例

当调用时,我们将定义一个返回参数数字的平方的函数。

# Example Python Code for User-Defined function
def square( num ):  
    """ 
    This function computes the square of the number. 
    """  
    return num**2   
object_ = square(6)  
print( "The square of the given number is: ", object_ )  

输出:

The square of the given number is:  36

调用函数

为了定义一个函数,使用def关键字给它一个名字,指定它必须接收的参数,并组织好代码块。

当一个函数的基本框架完成后,我们可以从程序的任何地方调用它。下面是如何使用a_function函数的示例。

# Example Python Code for calling a function
# Defining a function  
def a_function( string ):  
    "This prints the value of length of string"  
    return len(string)  

# Calling the function we defined  
print( "Length of the string Functions is: ", a_function( "Functions" ) )  
print( "Length of the string Python is: ", a_function( "Python" ) )  

输出:

Length of the string Functions is:  9
Length of the string Python is:  6

按引用传递 vs. 按值传递

在Python编程语言中,所有参数都是按引用传递的。这意味着如果我们在一个函数中修改了参数的值,调用该函数的函数也会反映这个变化。例如,

代码

# Example Python Code for Pass by Reference vs. Value
# defining the function  
def square( item_list ):  
    '''''This function will find the square of items in the list'''  
    squares = [ ]  
    for l in item_list:  
        squares.append( l**2 )  
    return squares  

# calling the defined function  
my_list = [17, 52, 8];  
my_result = square( my_list )  
print( "Squares of the list are: ", my_result )  

输出:

Squares of the list are:  [289, 2704, 64]

函数参数

以下是我们可以用来调用函数的参数类型:

  1. 默认参数
  2. 关键字参数
  3. 必需参数
  4. 可变长度参数

1)默认参数

默认参数是一个在函数被调用时,如果没有为参数提供值,则会采用默认值的参数。以下示例演示了默认参数。

代码

# Python code to demonstrate the use of default arguments  
# defining a function  
def function( n1, n2 = 20 ):  
    print("number 1 is: ", n1)  
    print("number 2 is: ", n2)  


# Calling the function and passing only one argument  
print( "Passing only one argument" )  
function(30)  

# Now giving two arguments to the function  
print( "Passing two arguments" )  
function(50,30)  

输出:

Passing only one argument
number 1 is:  30
number 2 is:  20
Passing two arguments
number 1 is:  50
number 2 is:  30

2) 关键字参数

关键字参数与调用函数的参数相关联。在使用关键字参数调用函数时,用户可以通过查看参数名称来确定是哪个参数的值。

我们可以以不同的顺序删除或排列特定的参数,因为Python解释器会将提供的关键字与其参数绑定的值进行连接。使用关键字来调用函数()方法的另一种方法如下所示:

代码

# Python code to demonstrate the use of keyword arguments  
  # Defining a function  
def function( n1, n2 ):  
    print("number 1 is: ", n1)  
    print("number 2 is: ", n2)  

# Calling function and passing arguments without using keyword  
print( "Without using keyword" )  
function( 50, 30)     

# Calling function and passing arguments using keyword  
print( "With using keyword" )  
function( n2 = 50, n1 = 30)  

输出:

Without using keyword
number 1 is:  50
number 2 is:  30
With using keyword
number 1 is:  30
number 2 is:  50

3) 必需参数

必需参数是在函数调用时按照预定的位置顺序提供给函数的参数。方法调用中所需的参数数量必须与函数定义中提供的参数数量相同。

我们应该将两个争论一起发送给capability();它将返回一个语法错误,如下所示。

代码

# Python code to demonstrate the use of default arguments    
# Defining a function  
def function( n1, n2 ):  
    print("number 1 is: ", n1)  
    print("number 2 is: ", n2)  

# Calling function and passing two arguments out of order, we need num1 to be 20 and num2 to be 30  
print( "Passing out of order arguments" )  
function( 30, 20 )     

# Calling function and passing only one argument  
print( "Passing only one argument" )  
try:  
    function( 30 )  
except:  
    print( "Function needs two positional arguments" )

输出:

Passing out of order arguments
number 1 is:  30
number 2 is:  20
Passing only one argument
Function needs two positional arguments

4) 可变长度参数

我们可以利用Python的功能来传递许多争论。但是,我们需要一个功能。这可以通过两种类型的字符之一来完成:

“args” 和 “kwargs” 指的是不基于关键字的参数。

为了帮助您理解可变长度参数,这里有一个例子。

代码

# Python code to demonstrate the use of variable-length arguments     
# Defining a function  
def function( *args_list ):  
    ans = []  
    for l in args_list:  
        ans.append( l.upper() )  
    return ans  
# Passing args arguments  
object = function('Python', 'Functions', 'tutorial')  
print( object )  

# defining a function  
def function( **kargs_list ):  
    ans = []  
    for key, value in kargs_list.items():  
        ans.append([key, value])  
    return ans  
# Paasing kwargs arguments  
object = function(First = "Python", Second = "Functions", Third = "Tutorial")  
print(object)  

输出:

['PYTHON', 'FUNCTIONS', 'TUTORIAL']
[['First', 'Python'], ['Second', 'Functions'], ['Third', 'Tutorial']]

返回语句

在调用定义的函数时,写入返回语句以退出函数并返回计算出的值。

语法:

return < expression to be returned as output >  

返回语句可以是一个参数、一个语句或一个值,并且在特定的作业或函数完成时作为输出提供。如果没有写返回语句,声明的函数将返回一个空字符串。

Python函数中的返回语句如下面的示例所示。

代码

# Python code to demonstrate the use of return statements    
# Defining a function with return statement  
def square( num ):  
    return num**2  

# Calling function and passing arguments.  
print( "With return statement" )  
print( square( 52 ) )  

# Defining a function without return statement   
def square( num ):  
     num**2   

# Calling function and passing arguments.  
print( "Without return statement" )  
print( square( 52 ) )  

输出:

With return statement
2704
Without return statement
None

匿名函数

由于我们不使用def关键字来声明这种类型的Python函数,所以它们是未知的。lambda关键字可以定义匿名的、简短的、单输出的函数。

lambda表达式可以接受任意数量的参数;然而,这个函数只能从它们中产生一个单一的值。它们不能包含多个指令或表达式。由于lambda需要表达式,一个神秘的功能不能直接调用来打印。

Lambda函数只能引用它们参数列表中的变量和全局域名,因为它们包含了独立的局部域。

与C和C++中的内联表达式相比,lambda表达式似乎是对函数的一行表示,它将函数的堆栈分配传递给执行以提高效率。

语法

lambda函数在语法上只有一行:

lambda [argument1 [,argument2... .argumentn]] : expression  

以下是如何使用lambda函数的示例:

代码

# Python code to demonstrate ananymous functions
# Defining a function  
lambda_ = lambda argument1, argument2: argument1 + argument2;  

# Calling the function and passing values  
print( "Value of the function is : ", lambda_( 20, 30 ) )  
print( "Value of the function is : ", lambda_( 40, 50 ) )  

输出:

Value of the function is :  50
Value of the function is :  90

变量的作用域和生命周期

变量的作用域是指在程序中声明的位置。变量的争议和因素并不是外部的,它们只在定义的功能中有一个本地的作用域。

变量在RAM中存在的时间长度就是它的生命周期。函数的生命周期与其内部变量的生命周期相同。当我们退出函数时,它们就被带走了。因此,函数中的变量的值不会从之前的执行中保持不变。

这里可以找到一个关于函数作用域的简单示例。

代码

# Python code to demonstrate scope and lifetime of variables
#defining a function to print a number.  
def number( ):  
    num = 50  
    print( "Value of num inside the function: ", num)  

num = 10  
number()  
print( "Value of num outside the function:", num)  

输出:

Value of num inside the function:  50
Value of num outside the function: 10

在这里,我们可以看到num的初始值为10。尽管函数number()将num的值更改为50,但函数外部的num值保持不变。

这是因为capability的内部变量num与外部变量(接近capability附近)不相同。尽管变量名相同,但它们是具有不同作用域的独立因素。

capability以外部变量为基础,在capability内部是可以访问这些变量的。这些变量的影响是全局的。我们可以在函数内部获取它们的值,但无法修改或更改它们。如果一个变量在函数外部声明为全局变量,那么可以在函数外部改变它的值。

Python中的内嵌能力

在Python中,能力被视为顶级对象。一流对象在编程语言中使用时得到相同的对待。它们可以存储在内置数据结构中,用作参数,在条件表达式中使用。如果一个编程语言将函数视为一等公民对象,则被认为实现了一等函数。Python支持第一类函数的概念。

在另一个函数中定义的函数被称为“内部”或“嵌套”函数。外部作用域的参数可以由内部函数访问。内部能力可以用来保护它们不受来自能力外的进展的影响。许多设计师将此交互视为一种化身。

代码

# Python code to show how to access variables of a nested functions  
# defining a nested function  
def word():  
    string = 'Python functions tutorial'  
    x = 5   
    def number():  
        print( string ) 
        print( x )

    number()  
word()  

输出:

Python functions tutorial
5

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程