原帖地址:
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.*中的注意事项,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
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`库提供的功能。 在Python的后端开发中,库如`qfunction`可以发挥重要作用。例如,它可以作为数据处理的工具,帮助开发者快速处理大量数据;或者,它可能...
标签"function python"强调了我们关注的是Python中的函数编程。Python的函数式编程特性允许我们定义、组合和重用函数,使得解决这类问题变得更加简洁和模块化。 总结一下,本篇文章讨论了如何使用Python编写自定义...
在这个例子中,`python_function`是我们定义的Python函数,我们将其绑定到JavaScript的全局对象`pythonApi`,这样JavaScript就可以访问这个函数了。 **从JavaScript调用Python API** 一旦Python API被暴露给...
在 Python 编程语言中,函数是代码组织的重要组成部分,而函数参数则是函数与外部程序交互的关键。本文将详细解释 Python 函数中的三种不同的参数传递方式:无星号参数、单星号参数(*args)和双星号参数(**kwargs...
### 在Python中定义两个同名同参数的函数 在日常编程实践中,我们通常遵循一个基本原则:在一个作用域内,不允许存在两个同名的函数或变量。然而,在Python中,却存在一种特殊情况,即可以在同一作用域下定义两个...
SPSS Python Extension function to use Mplus to run a path analysis from within SPSS
Python jupyter function Python 函数定义,以及参数设置等。
项目结构python_function├── __init__.py├── custom_object_function.py└── pyserde ├── __init__.py └── serde.py在python中,如果文件夹包含__init__文件,我们将其称为包,python_function和...
以下是对Python中英文词汇对照表中提到的一些关键知识点的详细解释: 1. **交互式环境与print输出**: - `print`:在Python中,`print`函数用于输出信息到控制台。 - `coding`:编码,指程序的编写。 - `syntax`...
下面就先定义一个函数: 复制代码 代码如下:def foo(): print(‘function’) foo() 在上述代码中,定义了一个名为foo的函数,这个函数没有参数。最后一行代码的功能是调用这个...在Python中,变量的作用域分三个等级:
在Python编程语言中,绘制函数图像是一项常见的任务,特别是在数据分析、科学计算以及可视化领域。本教程将深入探讨如何使用Python的Matplotlib库高效地绘制函数图像。Matplotlib是Python最常用的图形库,提供了丰富...
《Python库print_function在Python 2到Python 3的过渡中的关键作用》 在Python编程中,`print_function`是一个非常重要的概念,特别是在从Python 2向Python 3的迁移过程中。这个知识点对于理解Python语言的演进以及...
在这个项目中,作者创建了一个Python库,对ADB工具进行了封装,使得Python程序员能够更方便地在代码中调用ADB功能。 首先,我们要理解Python封装ADB的意义。Python是一种高级编程语言,以其简洁的语法和丰富的库而...
在这个主题中,我们将深入探讨如何使用Spotfire的Python脚本功能来调用和操作数据库。 首先,了解Spotfire的Python脚本环境。在Spotfire中,你可以通过“分析”菜单选择“编辑脚本”来访问Python脚本编辑器。这里,...
当需要在LabVIEW中利用Python的丰富功能时,通常有以下三种方法来实现LabVIEW调用Python: 1. **通过脚本执行器(Script Executor)** LabVIEW提供了一个名为“Script Executor”的VIs(Virtual Instruments),...
在Python中实现EWT,我们可以利用一些开源库,如`pyEWT`。 **Python编程语言** Python是一种高级编程语言,以其简洁的语法和丰富的库生态系统而闻名。在数据分析和科学计算领域,Python有诸如NumPy、SciPy、Pandas...
在Python编程过程中,故障诊断是不可或缺的一个环节,它关乎到代码的健壮性和问题的快速定位。本资源集合提供了一些基于Python的故障诊断程序,旨在帮助故障诊断学者深入理解和实践这一领域。以下将详细探讨Python...