python-变量定义域及相关函数

1) 变量按作用域分类:全局变量(global),局部变量(local)

2)LEGB原则:

     L(local):局部作用域

     E(Enclosing function local)外部嵌套函数作用域

     G(Global module)函数定义所在模块作用域

     B (Build)python 内置作用域

3)局部变量->全局变量

def func():
    a=1
    print(a)
    global b
    b=2
    print(b)
    
func()
print(b)

4)eval()函数:把字符串当成一个表达式进行执行,返回结果

a1 = 100
b1 = 200 
c1 = eval("a1+b1")
print(c1)

5)exec()执行表达式,跟4)类似

a1 = 100
b1 = 200 
c1 = eval("a1+b1")
print(c1)
exec("print(a1+b1)")

6)递归

def func(a):
    if a == 0:
        return 1
    return a * func(a-1)
func(4)

 

def func(n):
    if n == 1 or n == 2:
        return 1
    return func(n-1)+func(n-2)
func(10)

7)内置数据结构

  •     list
  •     set
  •     dict
  •     tuple
    # 列表 start
    l = [1,2,3,4]
    print(type(l))
    # 列表元素的访问
    # 索引
    print(l[0])
    # 分片 [:] 取列表数值范围 冒号左侧到右侧的
    print(l[1:3])
    # 分片 控制取数的增长幅度
    print(l[::2]) # 从列表中每次取数的间隔为2
    # 与java、C#语言不同,下标可以超过范围
    print(l[-9:5])
    # 使用负下标,则为逆序取值
    print(-1)
    print(l[-1:-2]) # 列表的截取,默认从左向右进行截取,所以冒号左侧的数比右侧的数要小
    print(l[-1:-2:-1]) # 列表的截取,,默认从左向右进行截取,所以冒号左侧的数比右侧的数要小;若要解决这个问题,则需调整列表的步长为负数即可
    print(l[::-1])
    # end
    # id函数
    a = 100
    b = 200 
    c=a
    print(id(a)) # 1877899840
    print(id(b)) # 1877903040
    print(id(c)) # 1877899840
    
    # 通过id函数判断分片是否为同一个列表进行操作 ,若id相同,则为相同一个列表,否则重新生成的列表
    print(id(l))
    print(id(l[::-1]))
    

     

 

你可能感兴趣的:(python)