码迷,mamicode.com
首页 > 编程语言 > 详细

pythonの函数学习笔记(一)

时间:2017-09-18 22:39:20      阅读:427      评论:0      收藏:0      [点我收藏+]

标签:fun   tin   字典   大小   不能   作用域   ...   statement   参数   

函数是可以实现一些特定功能的小方法或小程序
定义函数function的方法:
def function_name(arg1,arg2[,...]):
statement
[return value]
注意事项:
1.def开头,代表定义函数,def和函数名中间要敲一个空格;
2.返回值不是必须的,如果没有renturn语句,则默认返回值None;
3.函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线的组合,区分大小写且不能是保留字;

 

py使用名称空间的概念存储对象,这个名称空间就是对象作用的区域,不通对象存在域不同作用域。下面是不通对象的作用域规则:

1.每个模块都有自己的全局作用域;

2.函数定义的对象属局部作用域,只在函数内部有效,不会影响全局作用域中的对象。

3.赋值对象属于局部作用域,除非使用global 关键字进行声明。

LGB规则是py查找名字的规则,详情如下:

1.大多数名字引用在三个作用域中查找,先局部,再全局,最后内置。

(即在函数内部时需要使用相同名字的变量时,优先取函数内部的赋值结果,如实例中的b ,当局部变量中没有找到a,则取全局变量及其赋值,如实例中的a)

eg:b在局部作用域中找到,a在全局作用域中找到。

>>> a=2
>>> b=3
>>> def test(b):
    test=a*b
    return test

>>> print test(10)
20

2.如想在局部作用域中改变全局作用域的对象,必须使用global 关键字

#没有global时的情况(局部变量的对象只能作用于函数内,print name 打印出来的应该是全局变量的对象)

>>> name=testing
>>> def set():
    name=test
return name
>>> print set()
test
>>> print name testing

#使用global后的情况

>>> name=testing
>>> def set():
    global name
    name=test
    return name

>>> set()
test
>>> print name
test
>>> print set()
test

总结:global声明把赋值的名字映射到一个包含它的模块的作用域中,相当于全局变量使用

参数传递规则:

在一个函数中对不可变参数赋值不会影响(全局变量值)调用者

>>> a=7
>>> def test(a):
    a=a+1
    print a

    
>>> test(a)
8
>>> print a
7

 

在一个函数中对可变参数赋值会影响(全局变量值)调用者

>>> a=[1,2]
>>> b=7
>>> def test(a,b):
    a[0]=8
    b=6
    print a,b

    
>>> test(a,b)
[8, 2] 6
>>> print b
7
>>> print a
[8, 2]

当参数是对象指针时,无需定义传递的对象类型,eg:

>>> def test(a,b):
    return a+b

>>> test(1,2)
3
>>> test(a,b)
ab
>>> test([1],[2])
[1, 2]
>>> 

函数中的参数接收传递的值,参数可分默认参数,如:

def function(ARG=VALUE)
元组(Tuples)参数:

def function(*ARG)
字典(dictionary)参数:

def function(**ARG)
一些函数规则:

默认值必须在非默认参数之后;

在单个函数定义中,只能使用一个tuple参数(*ARG)和一个字典参数(**ARG)。

tuple参数必须在连接参数和默认参数之后。

字典参数必须在最后定义。

pythonの函数学习笔记(一)

标签:fun   tin   字典   大小   不能   作用域   ...   statement   参数   

原文地址:http://www.cnblogs.com/ppp1314520818/p/7544969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!