发布于 2014-09-20 12:05:53 | 2086 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Python3 Cookbook中文版,程序狗速度看过来!

Python编程语言

Python 是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。


本文向大家讲解了python下如何自定义函数(function)的方法,算是一种开发中最常见,最基础的功能,感兴趣的同学参考下.

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。

global:顾名思义,表示全局变量。即这个变量在python中处于最高层次上,也就是这个变量的定义层次最高,而不是在函数或类中。
local:局部变量,被定义在函数之中。
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


Python中,函数是可被重用的程序段。对于函数的定义,可以使用def关键字。

对于变量z,它就是nonlocal级别的。如果在inner中需要使用z,则需要使用nonlocal关键字进行声明。
讲完了变量的作用范围,就该讲讲函数的参数问题了。 Python中的函数可以0-n个参数,这和其他编程语言一样没有什么特别之处。同样的,可以为函数参数指定默认值。例如:

 


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等或者更多的参数放入字典中。

 



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务