python_06(函数)

8:12 2019/1/13/周日
//函数
def test(x,*y,**m):
    print(x)
    print(y)
    print(m,m["name"])
test(1,*["x","y","z"],**{"name":"azk"})//其中一个*表示传递的是元组,**表示的是传递的是字典,在定义函数的时候也要加*或者**,上面函数定义不能先把**放在*的前面,不然会出错。

结果:
1
('x', 'y', 'z')
{'name': 'azk'} azk

// 在局部里面加上 global name
                  name="zs"
这样的情况就是在局部里面修改了全局变量,
(如果在函数里面加入了global 那么如果有修改全局变量,则全局变量则修该了)
name="azk"//如果去掉这句话,在调用的时候还是zs
def chang_name():
    global name
    name="zs"
    print(name)
def global_name():
    print(name)
chang_name()
global_name()
结果:
zs
zs

//如果在局部变量里面对元组或者字典进行了增加或者删除,或者是修改,那个全局变量也变化了。
name=["azk"]
def chang_name():

    name.append("zs")
    print(name)
def global_name():
    print(name)
chang_name()
global_name()
结果:
['azk', 'zs']
['azk', 'zs']

name=["azk"]
def chang_name():

    name.pop()
    print(name)
def global_name():
    print(name)
chang_name()
global_name()
结果:
[]
[]
//规则:全局变量全部大写,局部变量全部小写。

 nonlocal 表示的是上一级的变量。
函数即变量。

//递归:
//问路,在其中调用import time ,通过time.sleep(s)延迟时间。s表示是秒。
import time
name=list("abcdefg")
def ask_myway(name):
    if len(name)==0:
        return "不好啥意思,没人知道!"
    name_top=name.pop(0)
    if name_top=='f':
        return "往东走20米,然后在往西走33米"
    else:
        time.sleep(5)
        print("我帮你问其他人去%s" %name)
        return ask_myway(name)
print(ask_myway(name))
//在局部变量中的时候一定加上global 才能调用全局变量。
name="azk"
def a():
    global name
    print(name)
    name="zs"
    def b():
         print(name)

    return b

a()()

猜你喜欢

转载自blog.csdn.net/qq_37431752/article/details/86464800