python :函数变量作用域和类型判断

ernestwang 842 0

变量作用域

  • 块级作用域
    if True:
        a = 250
    
    # 在代码块内部定义的变量可以在代码块外部使用
    # 说明没有块级作用域
    print(a)
  • 局部作用域
    def test():
        b = 100
    
    test()
    # 函数内部定义的变量只能在函数内使用
    # 说明有局部作用域,外部使用会报错
    # print(b)
  • 全局作用域
    c = 200
    
    def show():
        # 声明使用全局变量,然后就可以随意使用了
        global c
        # c = 100   # 这样相当于定义了新的局部变量
        # 函数内部可以使用全局变量,但是不能修改
        print('in func show:', c)
        c = 100
    
    show()
    print(c)
  • nonlocal
    def wai():
        d = 200
        def nei():
            # 若想修改外部函数的局部变量,需要使用nonlocal进行声明
            nonlocal d
            # d = 300 # 这样相当于定了局部变量
            # 内部函数中可以使用外部函数的局部变量,但是不能改
            # d += 100
            print(d)
            d += 100
        nei()
        print(d)
    
    wai()

类型判断

  • 示例:
    a = 100
    print(type(a))
    
    # if type(a) == int:        # 与特定的类型对比
    # if type(a) == type(123):  # 与已知的类型对比
    if isinstance(a, int):      # 使用专门的类型判断函数,是返回True,不是返回False
        print(a, '是整型变量')
        
    def test():   
        pass
    
    print(type(test))
    
    # 不能使用这种方式判断是否是函数
    # print(isinstance(test, function))
    
    # 使用专门的函数进行判断,是返回True,不是返回False
    from inspect import isfunction
    
    print(isfunction(test))
    
    # 判断一个对象是否可以调用,能够调用的不一定都是函数
    print(callable(test))
    print(callable(a))

练习:

  • 前面的练习试着封装成函数
  • 删除列表中重复的元素,保持元素顺序不变
  • 统计一个字符串中数字、字母以及其他字符的个数,返回一个元组
  • 完成列表的排序,能够支持升序和降序

标签: python 变量

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~

复制成功
微信号: irenyuwang
关注微信公众号,站长免费提供流量增长方案。
我知道了