老男孩Day10

Posted dymlnet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了老男孩Day10相关的知识,希望对你有一定的参考价值。

今天是在老男孩学习的第十天,主要对函数知识做了大致的补充,内容整理如下:

函数的优点:

  可读性强,复用性强。

默认参数的陷阱:

  如果参数的默认参数是可变数据类型,那么每一次调用函数的时候,如果不传值则会公用资源,也就是说这个可变类型不会初始化

def func(v,k = []):
    k.append(1)
    return k
v = 1
print(func(v))
v = 2
print(func(v))

技术分享图片如图,k的原本是空列表,但是在第一次调用后,k并没有初始化,所以在第二次的时候又加了1,第二次输出[1,1]

 

三元运算:

  变量 = True时要返回的结果 if 条件 else Falses时的结果  目的:简化代码

def fuck(s,b):
    c = s if s > b else b
    return  c

def fuck(s,b):
    if s > b:
        c = s
    else:
        c = b
    return c

这两个代码的作用是一样的  三元运算的要求:必须直接有结果,必须有if 和 else 

 

函数进阶

命名空间和作用域

技术分享图片在这段程序中,input属于内置命名空间,它是由python解释器自带的,在你打开python时就自动加载,不依赖个人。

input1 属于全局命名空间,她由用户自己定义,一般是函数或者变量,当你只有你建立后才可以使用。当关闭后随之消失。

h是在用户自己定义的函数里存在的,只有在这个函数里才可以使用叫局部命名空间。当调用该函数的时候才会创建,函数结束后就消失。要想在外使用必须重新定义。

 

全局命名空间,内置命名空间,局部命名空间的关系

技术分享图片

在局部空间中可以使用全局和内置的命名

在全局中可以使用内置的命名,不能使用局部的命名

内置中全局和内置都不能使用  (python自己编的,不能更改)

当我们在全局中定义了和内置命名空间中同名的名字时,会使用全局名字

多个自定义函数有多个独立的局部空间,相互之间不能调用

 

当我们在调用函数的时候,实际上是根据函数名找到这个函数的地址然后再执行

 

作用域:

全局作用域:里面是全局命名和内置命名

局部作用域:局部中的名字

 

全局中的变量可以拿来局部中查看,但是在局部中对全局中变量的操作不会改变全局中的数据。

s = input(>>>)
h = 0

def input1(s):
    h = 1

print(h)

技术分享图片

以上是关于老男孩Day10的主要内容,如果未能解决你的问题,请参考以下文章

老男孩Day11

老男孩Python 课堂笔记_Day2

老男孩DAY1作业二

老男孩Day6作业:计算器

老男孩Day8作业:FTP

老男孩Day9