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

python变量作用域,函数与传参

时间:2018-03-18 23:19:48      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:内部使用   访问   定义   作用   并且   表示   传递参数   java   color   

一、元组传值:

一般情况下函数传递参数是1对1,这里x,y是2个参数,按道理要传2个参数,如果直接传递元祖,其实是传递一个参数

>>> def show( x, y ):
...     print x, y
... 
>>> a = ( 10, 20 )
>>> show( a, 100 )
(10, 20) 100

而如果要把一个元祖( 有2项 )传给x和y,传递的时候要用*a,如果一个函数要3个参数,就不能传递2项的元祖

>>> def show( x, y ):
...     print "%s : %s" % ( x, y )
... 
>>> a=(10,20)
>>> show(*a)
10 : 20
>>> b=(10,20,30)
>>> show(*b)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: show() takes exactly 2 arguments (3 given)
print "%s : %s" % ( x, y )

这个百分号%s 类似c语言的printf,占位符  表示要用一个字符串来解释,后面的% ( x, y ) 就是传值.  x传给第一个%s, y传给第二个%s

如果后面不传值,就是打印字符串本身

>>> print "%s : %s" % ( hello, ghostwu )
hello : ghostwu
>>> print "%s : %s"
%s : %s

 

二、变量作用域跟javascript一样

函数外面定义的是全局变量,可以在函数里面或者外面访问

函数里面定义的是局部变量,函数调用完毕之后会被释放

>>> myname = ghostwu
>>> def show():
...     print myname
...     x = 10
... 
>>> show()
ghostwu
>>> x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name x is not defined
>>> myname
ghostwu
>>> 

global关键字可以把局部变量变成全局变量,这点跟php不一样(php是把全局变量引用到函数内部使用)

>>> def show():
...     global a
...     a = 10
... 
>>> show()
>>> a
10

同名的全局变量和局部变量,函数内访问的是局部变量,外面是全局变量

>>> a = 100
>>> def show():
...     a = 10
...     print a
... 
>>> a
100
>>> show()
10
>>> a
100

如果,同名的局部变量被global,并且函数被执行,那么函数执行之后 在输出这个变量,就是局部变量中的值

>>> a = 1
>>> def show():
...     global a
...     a = 2
... 
>>> a
1
>>> show()
>>> a
2

 

python变量作用域,函数与传参

标签:内部使用   访问   定义   作用   并且   表示   传递参数   java   color   

原文地址:https://www.cnblogs.com/ghostwu/p/8598019.html

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