卖薪沽酒 2009年10月18日 星期日 03:39 | 1743次浏览 | 4条评论
每天进步一
①def
我自己感觉函数应该是比较重要的,如果说各个语句是构架的话,函数就是肉了……通过调用函数才能实现各种行为,开始学习函数…
①def:
函数通过def关键字定义。def关键字后跟一个函数的 标识符 名称,然后跟一对圆括号。圆括号之中可以包括一些变量名,该行以冒号结尾。接下来是一块语句,它们是函数体。
具体的格式为:
def 函数名():
函数体
函数名() #直接引用函数即可
截图如下:
运行结果如下:
直接输入函数名,回车后也可直接输出结果:
疑惑:能不能直接调用文件呢?比如这个程序的文件名为:function1.Py,我应该怎么调用呢?
②函数形参
函数形参就是①中说的括号里面的参数,这些参数不是在函数内部赋值的,而是我们在引用函数的时候赋予的值,赋值的不同决定了函数执行结果的不同。
其实,看个例子就知道什么是形参,什么是实参了……还是没有什么可以说的(没法说,嘿嘿)
③局部变量
据我所知,对于初学者来说,局部变量和全局变量还是要特别注意的,这不仅关系到最终结果的正确与否,还关系到编程习惯的问题。
其实说的明白点,局部变量和全局变量就是总体和局部的关系,在局部内的变量在外边是不管用的,然而,在内部时里边的(局部变量)说了算(有点儿“强龙不压地头蛇”的意思)。
不好说,还是看例子……
例子对一开始的概念理解是很重要滴……
附:例子
#!/usr/bin/python
# Filename: func_local.py
def func(x):
print 'x is', x
x = 2 #局部变量
print 'Changed local x to', x #(此处后面的这个x是2,因为这是在块里面)
(注:此处与程序输出没有关系,而仅仅是定
义函数,所以不要混淆误以为此处的语句有输出)
x = 50 #全局变量
func(x) #(此处才是引用函数输出结果的地方)
print 'x is still', x
输出结果为:
$ python func_local.py
x is 50
Changed local x to 2 #(这里的2就是我们定义的局部变量x的值)
x is still 50
好好理解一下……其实很简单……
④global语句
如果为一个定义在函数外的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是 全局 的。我们使用global语句完成这一功能。没有global语句,是不可能为定义在函数外的变量赋值的。
还是看例子:
#!/usr/bin/python
# Filename: func_global.py
def func():
global x #这就说明了x是全局变量
print 'x is', x
x = 2
print 'Changed local x to', x #还是要注意此处是定义函数,这是我一开始的误区
x = 50 #对x赋值
func() #引用函数,函数中的第一次输出x的原始值即
上步赋予x的值50 ,第二次输出的是函数中定义的数值
print 'Value of x is',x #由于,在函数体中最后用到了命令
输出:
$ python func_global.py
x is 50
Changed global x to 2
Value of x is 2
其实感觉编程之道还是在于理解,真的是只可意会不可言传啊(笔涩,解释不清(*^__^*) ……)
⑤默认参数值
所谓的默认参数值就是说,在函数定义的时候函数中的此参数有一个默认的值,在以后的引用中如果没有特殊说明,此参数就采用默认值,当然此参数的值可以由你提供。但是材料中有一句:“注意,默认值应该是一个参数,更加准确的说,默认值应该是不可变的”,这点我有点不是很理解,当然这点看起来本来就有点难以理解,所以文中还说会在以后的章节中详细介绍,所以,以后再理解吧,呵呵
本节的内容很容易理解,就是说这个参数在我没有特别声明的时候你就给我用默认值!除非我说让你用别的值你就用别的值……
例子:
#!/usr/bin/python
# Filename: func_default.py
def say(message, times = 1): #times 的默认值为1
print message * times
say('Hello') #我们没有提供参数,所以使用默认1
say('World', 5) #我们提供了参数5,所以默认值就不再使用,而是使用5
输出:
$ python func_default.py
Hello
WorldWorldWorldWorldWorld
特别注意:
只有在形参表末尾的那些参数可以有默认参数值,也就是说在声明函数形参时,必须先声明没有默认值的形参,然后才能声明有默认值的形参,举个例子就明白了,说起来挺拗口的……
例如,def func(a, b=5)是有效的,但是def func(a=5, b)是 无效 的。
Zeuux © 2024
京ICP备05028076号
回复 吴龑 2009年10月19日 星期一 00:41