`
jythoner
  • 浏览: 608081 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Python中的Function

阅读更多
原帖地址:
http://blog.csdn.net/prince2270/archive/2009/09/25/4592753.aspx
Python中,函数是可被重用的程序段。对于函数的定义,可以使用def关键字。下面就先定义一个函数:
def foo():
    print('function')
foo()


     在上述代码中,定义了一个名为foo的函数,这个函数没有参数。最后一行代码的功能是调用这个函数。这是一个函数的最简单形式。下面来介绍一下有参数的函数:

def foo():
    print('function')
def foo1(a,b):
    print(a+b)
foo()
foo1(1,2)


     foo1就是一个有参数的函数,使用foo1(1,2)就可以调用这个有参的函数了。

     在程序中,有变量存在,就会涉及到变量的作用域的问题。在Python中,变量的作用域分三个等级:global、local和nonlocal。

   1. global:顾名思义,表示全局变量。即这个变量在python中处于最高层次上,也就是这个变量的定义层次最高,而不是在函数或类中。
   2. local:局部变量,被定义在函数之中。
   3. nonlocal:这是一个相对的概念。在python中,函数内部可以嵌套定义内部函数,这样函数内部的变量相对于函数内部的内嵌函数来讲就是nonlocal的。

     下面,给出相关的程序来说明,首先看一下全局和局部变量:

x = 1
y = 2
def foo(x):
    print(x)
    print(y)
    print('***********')
    x = 3
    global y
    y = 3
    print(x)
    print(y)
    print('***********')
foo(x)
print(x)
print(y)

#************************
#运行结果
1
2
***********
3
3
***********
1
3


     在上述程序中,定义了两个全局变量x和y, 在函数foo内部,也定义了一个局部变量x。根据运行结果可知,在foo内部,变量x是真正的局部变量。因为对其所做的修改并没有对全局变量x产生影响。另外,如果在foo内部需要使用全局变量,则需要使用global关键字。global y的意图就是声明变量y为外部声明过的全局变量y。所以,在foo内部对y进行修改后,在foo外部仍然有影响。因为foo修改的是全局变量。

     再来看一下nonlocal:

    
def out():
    z = 3
    def inner():
        nonlocal z
        z = 4
        print('inner function and z = {0}'.format(z))
    inner()
    print('out function and z = {0}'.format(z))
out()
#**********
#运行结果
inner function and z = 4
out function and z = 4


     对于变量z,它就是nonlocal级别的。如果在inner中需要使用z,则需要使用nonlocal关键字进行声明。

     讲完了变量的作用范围,就该讲讲函数的参数问题了。 Python中的函数可以0-n个参数,这和其他编程语言一样没有什么特别之处。同样的,可以为函数参数指定默认值。例如:

    
def power(num,power = 1):
    print(num ** power)
power(2)
power(2,2)
#*************
#运行结果
2
4


def power(num,power = 1): print(num ** power) power(2) power(2,2) #************* #运行结果 2 4

     对于第一次调用power(2),并没有指定第二个参数power的值,根据输出结果可知,函数使用了默认值。第二次调用power(2,2),因为给定了第二个参数的值,所以,power的值为2。

     在这里需要注意的是,在python中,对于给你默认值的参数,一定要在参数列表的最后。也就是说,在参数列表中,如果出现了给定默认值的参数后,就不能在出现没有给定默认值的参数。

     对于参数赋值,可以使用关键字的方式赋值。例如:

    
def func(a,b=1,c=2):
    print('a={0},b={1},c={2}'.format(a,b,c))
func(1)
func(1,2)
func(1,c=3)
func(b=2,a=4)
#*************
#运行结果
a=1,b=1,c=2
a=1,b=2,c=2
a=1,b=1,c=3
a=4,b=2,c=2


     可以通过指定参数名称来对参数进行赋值。

     Python支持可变参数列表,首先看下面的程序:

    
def total(initial=5,*numbers,**keywords):
    count = initial
    for number in numbers:
        count += number
    for key in keywords:
        count += keywords[key]
    return count
print(total(10,1,2,3,vegetables=10,fruits=5))
#***************
#运行结果
31



       在上述程序中,值得关注的是*numbers 和**keywords。在程序中,第一个参数10对应第一个initial参数。接下来就是可变参数列表:其中1,2,3是一个序列,vegetables=10,fruits=5是字典。在Python中,*numbers表示的是:将1,2,3等或者更多的参数放入这个序列中;**keywords表示的是:将vegetables=10等或者更多的参数放入字典中。
分享到:
评论

相关推荐

    Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项

    主要介绍了Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

    Functional_Python_Programming

    evaluation—often encapsulated in function definitions. It de-emphasizes or avoids the complexity of state change and mutable objects. This tends to create programs that are more succinct and ...

    Python库 | qfunction-1.0.1641-py3-none-any.whl

    安装完成后,用户便可以在Python程序中导入并使用`qfunction`库提供的功能。 在Python的后端开发中,库如`qfunction`可以发挥重要作用。例如,它可以作为数据处理的工具,帮助开发者快速处理大量数据;或者,它可能...

    python求最小值_function_python_

    标签"function python"强调了我们关注的是Python中的函数编程。Python的函数式编程特性允许我们定义、组合和重用函数,使得解决这类问题变得更加简洁和模块化。 总结一下,本篇文章讨论了如何使用Python编写自定义...

    Python-V8Py使用V8引擎从JavaScript中调用PythonAPI

    在这个例子中,`python_function`是我们定义的Python函数,我们将其绑定到JavaScript的全局对象`pythonApi`,这样JavaScript就可以访问这个函数了。 **从JavaScript调用Python API** 一旦Python API被暴露给...

    Passing arguments to Python functions

    在 Python 编程语言中,函数是代码组织的重要组成部分,而函数参数则是函数与外部程序交互的关键。本文将详细解释 Python 函数中的三种不同的参数传递方式:无星号参数、单星号参数(*args)和双星号参数(**kwargs...

    在Python中居然可以定义两个同名通参数的函数

    ### 在Python中定义两个同名同参数的函数 在日常编程实践中,我们通常遵循一个基本原则:在一个作用域内,不允许存在两个同名的函数或变量。然而,在Python中,却存在一种特殊情况,即可以在同一作用域下定义两个...

    SPSS Python Extension function to use Mplus to run a path analys

    SPSS Python Extension function to use Mplus to run a path analysis from within SPSS

    Python jupyter function

    Python jupyter function Python 函数定义,以及参数设置等。

    python-function:Python函数示例

    项目结构python_function├── __init__.py├── custom_object_function.py└── pyserde ├── __init__.py └── serde.py在python中,如果文件夹包含__init__文件,我们将其称为包,python_function和...

    Python中英文词汇对照表(2020).pdf

    以下是对Python中英文词汇对照表中提到的一些关键知识点的详细解释: 1. **交互式环境与print输出**: - `print`:在Python中,`print`函数用于输出信息到控制台。 - `coding`:编码,指程序的编写。 - `syntax`...

    Python中的Function定义方法第1/2页

    下面就先定义一个函数: 复制代码 代码如下:def foo(): print(‘function’) foo() 在上述代码中,定义了一个名为foo的函数,这个函数没有参数。最后一行代码的功能是调用这个...在Python中,变量的作用域分三个等级:

    Python中函数图像快速绘制的方法.zip

    在Python编程语言中,绘制函数图像是一项常见的任务,特别是在数据分析、科学计算以及可视化领域。本教程将深入探讨如何使用Python的Matplotlib库高效地绘制函数图像。Matplotlib是Python最常用的图形库,提供了丰富...

    Python库 | print_function_py2-0.3.tar.gz

    《Python库print_function在Python 2到Python 3的过渡中的关键作用》 在Python编程中,`print_function`是一个非常重要的概念,特别是在从Python 2向Python 3的迁移过程中。这个知识点对于理解Python语言的演进以及...

    自编python包装的adb函数

    在这个项目中,作者创建了一个Python库,对ADB工具进行了封装,使得Python程序员能够更方便地在代码中调用ADB功能。 首先,我们要理解Python封装ADB的意义。Python是一种高级编程语言,以其简洁的语法和丰富的库而...

    Spotfire的python脚本对数据库的调用_spotfirepython_

    在这个主题中,我们将深入探讨如何使用Spotfire的Python脚本功能来调用和操作数据库。 首先,了解Spotfire的Python脚本环境。在Spotfire中,你可以通过“分析”菜单选择“编辑脚本”来访问Python脚本编辑器。这里,...

    LabVIEW 调用 Python的三种方法_labview调用python_LabviewPython_lookrj7_wor

    当需要在LabVIEW中利用Python的丰富功能时,通常有以下三种方法来实现LabVIEW调用Python: 1. **通过脚本执行器(Script Executor)** LabVIEW提供了一个名为“Script Executor”的VIs(Virtual Instruments),...

    EWT-python.zip

    在Python中实现EWT,我们可以利用一些开源库,如`pyEWT`。 **Python编程语言** Python是一种高级编程语言,以其简洁的语法和丰富的库生态系统而闻名。在数据分析和科学计算领域,Python有诸如NumPy、SciPy、Pandas...

    code_python故障诊断_python故障_fault_故障诊断_python_

    在Python编程过程中,故障诊断是不可或缺的一个环节,它关乎到代码的健壮性和问题的快速定位。本资源集合提供了一些基于Python的故障诊断程序,旨在帮助故障诊断学者深入理解和实践这一领域。以下将详细探讨Python...

Global site tag (gtag.js) - Google Analytics