Python中的怎么定义变量范围按所在位置和作用范围有哪些类型呢?

在Java/C#中,执行上面的代码会提示name,age没有定义,而在Python中可以执行成功,这是因为在Python中是没有块级作用域的,代码块里的变量,外部可以调用,所以可运行成功

name变量只在func()函数内部中生效,所以在全局中是没法调用的

Python中有作用域链,变量会由内到外找,先去自己作用域去找,自己没有再去上级去找,直到找不到报错

4、终极版作用域o( ̄▽ ̄)d

这一段代码可以做如下理解:

f2()执行结果为函数f1的内存地址,即ret=f1;执行ret()等同于执行f1(),执行f1()时与f2()没有任何关系,name=“lzl”与f1()在一个作用域链,函数内部没有变量是会向外找,所以此时变量name值为“lzl”

判断下li的类型?li里面的元素为什么类型?

可以看到li为列表类型,list里面的元素为函数,那么打印list里面第一个元素的返回值,此时返回值为多少?

li第一个函数的返回值为9还不是0,记住:函数在没有执行前,内部代码不执行;

解析:这是一个列表解析表达式,每个元素都是一个函数,每个函数返回的是x的值。for x in range(10)会循环10次,直到x=9结束,所以x的值是9,然后生成一个函数列表,每个函数的功能是返回x的值。
此时,调用函数列表中的第一个函数,也就是返回x的值,而x的值上面已经知道了就是9
所以最重要的一点就是,在列表解析式中,循环10次生成的只是函数,她不会返回x的值因为它还没有调用~也就是还没执行~


  • 三、python基础知识点


in :判断元素是否存在与列表中。

append(): 想列表的最后一个位置追加一个元素,只接受一个参数

insert(): 向原列表的指定位置插入一个元素,接收两个参数,第一个是索引,第二个参数是要插入的元素。

remove(): 移除列表中某个指定的元素,没有返回值,并且假如有多个相同的元素存在,每次只会移除排在最前面的那个元素

pop(): 从原列表中删除一个元素,并且把这个元素返回,接收零个或一个参数,参数是偏移量,int 类型。


  1. 元组和列表一样,也是一种序列类型的数据。
  2. 唯一的不同是,元组是相对不可变的。

有元素的元组实际上是使用英文逗号创建的

创建非空元素的元组是用逗号,而不是小括号

元组也是序列类型的数据,取值和切片和列表的操作一样



 

2.元组内的值不会被意外的修改
4.函数的参数是以元组形式传递的



例子:如何将一个列表和一个字典或两个字典中的健值对关联起来生成一个新的字典


往空白字典 info 中添加值

以下示列类似,case的用法

创建空的集合只能用set()创建,因为这样以 {} 创建已经被字典使用了 如果是字典给到set()则只会保留键,值则会被抛弃

获取服务器的信息并清洗

查看服务器信息,一般要获取厂商、产品型号、主板BIOS 版本、nsn


我要回帖

更多关于 怎么定义变量范围 的文章