《跟老齐学python》学习笔记4

  • 全局变量
    1
    2
    3
    4
    5
    6
    7
    x = 2
    def funcx():
    x = 9
    print "this x is in the funcx:-->", x
    funcx()
    print "--------------------------"
    print "this x is out of funcx:-->", x
    输出
1
2
3
this x is in the funcx:--> 9
--------------------------
this x is out of funcx:--> 2

在函数内多了一个global x,这句话的意思是在声明x是全局变量,也就是说这个x跟函数外面的那个x是同一个,接下来通过x=9将x的引用对象变成了9

1
2
3
4
5
6
7
8
9
x = 2
def funcx():
global x
#跟上面函数的不同之处
x = 9
print "this x is in the funcx:-->", x
funcx()
print "--------------------------"
print "this x is out of funcx:-->",x

输出

1
2
3
this x is in the funcx:--> 9
--------------------------
this x is out of funcx:--> 9
  • 当函数的参数个数不确定的时候,可以通过如下方法
    1
    2
    3
    4
    5
    6
    7
    8
    def func(x,*arg):
    print(x)
    result = x
    print(arg)
    for i in arg:
    result += i
    return result
    print(func(1,2,3,4,5,6,7,8,9))
    结果为
1
2
3
1
(2, 3, 4, 5, 6, 7, 8, 9)
45

从上面例子可以看出,如果输入的参数个数不确定,其他参数全部通过*arg,以元组的形式由arg收集起来。

  • 更优(zhuang)雅(b)的方式
1
2
3
4
>>> def add(x, y):
...
return x + y
...
1
2
3
>>> bars = (2, 3)
>>> add(*bars)
5

先把要传的值放到元组中,赋值给一个变量bars,然后用add(bars)的方式,把值传到函数内。注意,元组中元素的个数要跟函数所要求的变量个数一致。使用一个星号,以元组形式传值,用**的方式,是以字典的形式传值。

  • 几个特殊函数,filter、map、reduce、lambda、yield……
  • 函数尽量达到的要求
    1 尽量不要使用全局变量。
    2 如果参数是可变类型数据,则在函数内不要修改它。
    3 每个函数的功能和目标要单纯,不要试图一个函数做很多事情。
    4 函数的代码行数尽量少。
    5 函数的独立性越强越好,不要跟其他的外部东西产生关联。

以上。

:转载文章请注明出处,谢谢~