精华内容
下载资源
问答
  • python函数访问全局变量

    千次阅读 2018-12-09 14:48:09
    python允许在函数访问全局变量的值,但不允许在函数中修改全局变量的值。 In the last video, you saw that within a function, we can print a global variable’s value successfully without an error. This ...

    python允许在函数中访问全局变量的值,但不允许在函数中修改全局变量的值。

    In the last video, you saw that within a function, we can print a global variable’s value successfully without an error. This worked because we were simply accessing the value of the variable. If we try to change or reassign this global variable, however, as we do in this code, we get an error. Python doesn’t allow functions to modify variables that aren’t in the function’s scope.

    展开全文
  • 一:局部变量和全局变量 局部变量: 定义在函数内部的变量称为局部变量函数的形参也是局部变量),...在函数内首次对变量赋值是创建局部变量,再次为变量赋值是修改局部变量的绑定关系,在函数内部的赋值语句不...

    一:局部变量和全局变量

    局部变量:

    定义在函数内部的变量称为局部变量(函数的形参也是局部变量),局部变量只能在函数内部使用,只有在函数调用时才能够被创建,在函数调用之后会动销毁。

    全局变量

    定义在函数外部,模块内部的变量称为全局变量,所有的函数都可以直接访问全局变量(但函数内部不能将其直接赋值)

    在函数内首次对变量赋值是创建局部变量,再次为变量赋值是修改局部变量的绑定关系,在函数内部的赋值语句不会对全局变量造成影响。

    局部变量只能在其被声明的函数内部访问,而全局变量可以在整个模块范围内访问。

    二:globals和locals函数

    1、globals()返回当前全局作用域内变量的字典。(当全局和局部同名的时候)

    2、locals() 返回当前局部作用域内为变量的字典。

    示例:

    a = 1

    b = 2

    c = 3

    def f1(c, d)

    e = 300

    print(‘local()返回:’, local())

    print(‘globals()返回:’, globals())

    f1(100, 200)

    三:函数变量

    函数名是变量,它在创建函数时绑定一个函数。可用作变量的交换绑定关系

    示例:

    一个函数可以作为另一个函数的参数传递。

    示例:

    四:函数的返回值

    函数可以返回另一个函数。

    示例:

    五:练习

    写一个计算器解释执行器:

    已知有如下函数:

    def myadd(x, y): #计算两个数相加

    return x + y

    def mymul(x. y): #计算两个数相乘

    return x * y

    def get_op(s): #代表操作字符串:’加’, ‘乘’

    主函数:

    def main():

    while True:

    s = input(‘请输入计算公式:’)

    L = s.split()

    a, s, b = L

    fn = get_op(s)

    print(‘结果是:’, fn(a, b)) --》代码如下图:


    推荐我们的Python学习扣qun:784758214 ,看看前辈们是如何学习的!从基础的python脚本到web开发、爬虫、django、数据挖掘等【PDF,实战源码】,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!每天都有大牛定时讲解Python技术,分享一些学习的方法和需要注意的小细节,点击加入我们的 python学习者聚集地

    总结:

    我们通常说的函数也是一个变量,与变量等价交换一样,也可以实现交换绑定,而且函数的变量还有全局和局部之分,全局变量无论在哪都可以调用,但局部变量只用在内部函数里面才能用,而且函数还能作为参数返回另一个函数。这就是函数的

    展开全文
  • Python函数变量

    千次阅读 2018-09-20 18:36:54
    一、Python函数的定义和规则: 1、规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。 函数的第一行语句可以选择...

    一、Python函数的定义和规则:

    1、规则:

    • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
    • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
    • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
    • 函数内容以冒号起始,并且缩进。
    • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

    2、函数的作用:

    (1)、提高应用的模块性

    (2)、提高代码的重复利用率

    (3)、用来实现单一,或相关联功能的代码段

    3、定义

    语法:

    def 函数名(参数列表):
        函数体

    实例:

    def hello():
        """
        仅用于展示函数定义
        :return:
        """
        print("Hello World")
    
    
    hello()  # 函数调用
    # 计算面积函数
    def area(width, height):
        """
        根据宽高计算面积
        :param width: 宽度
        :param height: 高度
        :return: 面积
        """
        return width * height
    
    
    def print_welcome(name):
        """
        根据传入的名字打印欢迎"名字"
        :param name:传入的名字
        :return: 打印语句
        """
        print("Welcome", name)
    
    
    print_welcome("Wangdoudou")
    w = 4
    h = 5
    print("width =", w, " height =", h, " area =", area(w, h))

     

    二、函数的具体使用

    1、参数传递

    (1)、可更改(mutable)对象:列表、字典,修改的跟原来的是同一个引用

    def changeme(mylist):
        """
        修改传入的列表
        :param mylist: 
        :return: 
        """
        mylist.append([1, 2, 3, 4])
        print("函数内取值: ", mylist)
        return
    
    
    # 调用changeme函数
    mylist = [10, 20, 30]
    changeme(mylist)
    print("函数外取值: ", mylist)

     

    (2)、不可更改(immutable)对象:字符串、数字、元组,传参时相当于重新生成了对象

    a = "wangdoudou"
    b = 15
    
    
    def Changestr(a):
        a = "haha"
    
    
    def Changenum(b):
        b = 20
    
    
    Changestr(a)
    Changenum(b)
    
    print("a = ", a)
    print("b = ", b)

     

    2、函数参数:

    函数定义时的参数为形参:调用时才分配内存单元,调用结束释放内存

    调用函数时传入的参数值为实参

    参数类型:

    (1)、必需参数:须以正确的顺序传入函数。调用时的数量必须和声明时的一样

    def printme(str):
        """
        打印任何传入的字符串
        :param str:
        :return:
        """
        print(str)
        return
    
    
    # 调用printme函数
    printme("函数定义了几个参数,就必须传入几个参数")

    (2)、关键字参数:允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值

    def printinfo(name, age):
        """
        打印任何传入的字符串
        :param name: 名字
        :param age: 年龄
        :return:
        """
        print("名字: ", name)
        print("年龄: ", age)
        return
    
    
    # 调用printinfo函数
    printinfo(age=50, name="wangdoudou")

    (3)、默认参数:调用函数时,如果没有传递参数,则会使用默认参数

    def printinfo(name, age=35):
        """
        打印用户的名字和年龄
        :param name:
        :param age:
        :return:
        """
        print("名字: ", name)
        print("年龄: ", age)
        return
    
    
    # 调用printinfo函数
    printinfo(age=50, name="wangdoudou")
    print("------------------------")
    printinfo(name="wangdoudou")

    (4)、不定长参数:处理比声明时更多的参数

    一个星号*:参数会以元组(tuple)的形式导入,存放所有未命名的变量参数

    基本语法:

    def functionname([formal_args,] *var_args_tuple ):
       "函数_文档字符串"
       function_suite
       return [expression]
    def printinfo(arg1, *vartuple):
        print("输出: ")
        print(arg1)
        print(vartuple)
        for var in vartuple:
            print(var)
        return
    
    
    # 调用printinfo 函数
    printinfo(10)
    printinfo(70, 60, 50)

     

    两个星号**:参数会以字典的形式导入

    基本语法:

    def functionname([formal_args,] **var_args_dict ):
       "函数_文档字符串"
       function_suite
       return [expression]
    def printinfo(arg1, **vardict):
        print("输出: ")
        print(arg1)
        print(vardict)
    
    
    # 调用printinfo 函数
    printinfo(1, a=2, b=3)

     

    一个星号和两个星号一块用:可接受任意长度,任意类型的参数

    def test(x, *args, **kwargs):
        print(x)
        print(args, args[3])
        print(kwargs, kwargs['y'])
    
    
    test(1, 2, 3, 4, 5, 6, 7, y="hehe", z=110)

     

    声明函数时,参数中星号 * 可以单独出现,如果单独出现星号 * 后的参数必须用关键字传入:

    def f(a,b,*,c):
        return a+b+c

    错误调用:f(1,2,3) 

    正确调用:f(1,2,c=3)

     

    5、return语句:return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None

    def sum(arg1, arg2):
        """
        返回2个参数的和
        :param arg1:
        :param arg2:
        :return: 返回2个参数的和
        """
        total = arg1 + arg2
        print("函数内 : ", total)
        return total
    
    
    # 调用sum函数
    total = sum(10, 20)
    print("函数外 : ", total)
    
     

    三、匿名函数:python 使用 lambda 来创建匿名函数,不再使用 def 语句这样标准的形式定义一个函数

    1、定义

    语法:

    lambda [arg1 [,arg2,.....argn]]:expression

    实例:

    sum = lambda arg1, arg2: arg1 + arg2
    print("相加后的值为 : ", sum(10, 20))

    2、特性:

    • lambda 只是一个表达式,函数体比 def 简单很多。
    • lambda 的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
    • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
    • lambda 函数的目的是调用小函数时不占用栈内存从而增加运行效率。

     

    四、变量作用域:变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称

    1、变量作用域类型

    • L (Local) 局部作用域
    • E (Enclosing) 闭包函数外的函数中
    • G (Global) 全局作用域
    • B (Built-in) 内建作用域

    作用域排序:以  L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找

    示例:

    x = int(2.9)  # 内建作用域
    g_count = 0  # 全局作用域
    
    
    def outer():
        o_count = 1  # 闭包函数外的函数中
    
        def inner():
            i_count = 2  # 局部作用域

     

    Tips:Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问

     

    2、全局变量和局部变量:定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域,局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。

    实例:

    total = 0  # 这是一个全局变量
    
    
    def sum(arg1, arg2):
        total = arg1 + arg2  # total在这里是局部变量.
        print("函数内是局部变量 : ", total)
        return total
    
    
    # 调用sum函数
    sum(10, 20)
    print("函数外是全局变量 : ", total)

     

    3、global 关键字:内部作用域修改外部作用域的变量

    实例:

    num = 1
    
    
    def fun1():
        global num  # 使用 global 关键字修改外部变量
        print(num)
        num = 123
        print(num)
    
    
    fun1()
    print(num)

     

    4、nonlocal关键字:修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量

    实例:

    def outer():
        num = 10
    
        def inner():
            nonlocal num  # nonlocal关键字声明
            print(num)
            num = 100
            print(num)
    
        inner()
        print(num)
    
    
    outer()

     

     

    五、函数作用域:输出的结果是从当前运行的代码块开始,然后逐级向上运行

    name = "wangdoudou"
    
    
    def printname():
    	name = "wangdoudou1"
    
    	def test():
    		name = "wangdoudou2"
    		print(name)
    
    	return test
    
    
    # 第一种执行方式
    printname()()
    
    # 第二种执行方式
    res = printname()
    res()

    输出结果:

    
     
    展开全文
  • Python函数变量名解析

    千次阅读 2018-06-05 21:26:32
    Python函数变量名解析1、Python函数函数Python为了代码最大程度的重用和最小化代码冗余而提供的基本程序结构,用于将相关功能打包并参数化Python中可以创建4种函数: 1)、全局函数:定义在模块中,每个模块都...

    Python函数和变量名解析

    1、Python函数

    函数是Python为了代码最大程度的重用和最小化代码冗余而提供的基本程序结构,用于将相关功能打包并参数化

    Python中可以创建4种函数:         

    1)、全局函数:定义在模块中,每个模块都是一个全局作用域,因此,全局作用域的范围仅限于单个程序文

    2)、局部函数:嵌套在其它函数中

    3)、lambda函数:表达式

    4)、方法:与特定数据类型关联的函数表,并且只能与数据类型关联一起使用

    Python提供众多内置函数                                

    Python创建、改变、查找变量名都是在名称空间中进行,在代码中变量名被复制的位置决定了其能被访问到的范围

    Python函数执行环境

    如图,函数可以通过多种方法获得输入以及产生输出:


    创建函数,语法格式:

    def  funcName(arg1,arg2, ...):

    suite

    语法说明:

    1)、def是一个可执行语句,可以出现在任何能够使用语句的地方,甚至可以嵌套在其它语句中,例如if或while语句。

    2)、def创建一个对象并将其赋值给一个变量名(即函数名)

    3)、return用于返回结果对象,为可选参数,无return语句时函数自动返回none对象。返回对个值时,使用逗号隔开,并组合称一个元组对象返回

    4)、def语句运行之后,可以在程序中使用函数后附加括号进行调用,每次对函数的调用都会创建一个新的本地作用域,赋值的变量除非声明为全局变量,否则均为本地变量

    5)、所有的变量名都可以归纳为本地、全局或内置的(由__builtin__模块提供)

    python函数用法示例

    例1:交互式模式下创建并调用函数

    In [1]: def printname():

      ...:     raw_input('Please Inputyour name:')

      ...:    

    In [2]: printname()

    Please Input your name:Fieldyang

    例2:编辑test.py,测试全局变量和函数内本地变量

    [root@test 0527]# vim test.py

    #!/usr/bin/python27

    x = 27

    def f1():

        x= 52

       print x

    f1()

    print x

    [root@test 0527]# chmod +x test.py

    [root@test 0527]# ./test.py

    52   #调用函数产生的输出,函数内变量

    27   #print产生的输出,本地变量

    例3:编辑test.py,测试全局变量和函数内变量的作用域

    [root@test 0527]# vim test.py

    #!/usr/bin/python27

    x = 27

    def f1():

        y= 52

       print "def y = %d,global x = %d" % (y,x)

    f1()

    print "global x = %s." %x

    print y

    [root@test 0527]# ./test.py

    def y = 52,global x = 27

    global x = 27.

    Traceback (most recent call last):

     File "./test.py", line 9, in <module>

       print y

    NameError: name 'y' is not defined

    #函数内部可以使用全局变量,局部同名变量不影响全局变量,并且全局变量无定义时无法自行使用函数内同名变量。

    #函数内部赋值的变量可以使用global声明为全局变量,则全局中均会调用该变量值。

    例4:编辑test.py,定义全局变量

    [root@test 0527]# vim test.py

    #!/usr/bin/python27

    x = 27

    y = 66

    #本地变量,函数内部声明“global y”后该参数不会被调用

    def f1():

       global y

        y= 52

       print "global y = %d,global x = %d" % (y,x)

    f1()

    print "global x = %s." %x

    print "global y = %s." %y

    [root@test 0527]# ./test.py

    global y = 52,global x = 27

    global x = 27.

    global y = 52.

     2、变量名解析

    1)、LEGB原则:

    Local-->Enclosing functionlocals-->Global-->Built-in

    变量名引用分三个作用域进行

    首先是本地、之后是函数内、接着是全局、最后是内置,作用域越小,优先级越高

    2)、变量名解析示例

    例1:函数嵌套的使用

    [root@test 0527]# vim test2.py

    #!/usr/bin/python27

    #

    z = "From global :"

    m = 666

    def f1():

        x= "From function f1 :"

        y= 222

       print "%s y = %d" % (x,y)

       print "%s m = %d" % (z,m)

       def f2():

           x = "From function f2 :"

           print "%s y = %d" % (x,y)

       f2()

    f1()

    print "%s m = %d" % (z,m)

    [root@test 0527]# chmod +x test2.py

    [root@test 0527]# ./test2.py

    From function f1 : y = 222

    From global : m = 666

    From function f2 : y = 222

    From global : m = 666



    展开全文
  • python函数局部变量

    千次阅读 2017-03-11 15:23:43
    python简单变量(不考虑类变量)分为两类: 函数内定义的局部变量,和函数外定义的全局变量 基本访问规则 1. 在函数内部,可以直接读取访问全局变量(注意只读) #!/usr/bin/env python i = 10 def f()...
  • Python中,如果想函数内部对函数外的变量进行操作,有一些问题(一些在Java,C中再正常不过的操作这里就不行)
  • Python 嵌套函数中内部函数引用外部函数循环变量情况 Python中的嵌套函数也称为闭包(Closure),有一个特点就是内部函数可以引用外部函数内的变量并且在外部函数返回后保存该引用变量的值;但是如果该引用变量是...
  • 函数内部的变量看成函数的一个属性,从而在其他函数中进行调用,需要注意的是,不管在哪里调用,自己本身函数内部使用或者其他函数中调用都需要进行域指定。def fuc1(): #通过一个 ".",使用了fuc2的变量 b = fuc...
  • Python中,嵌套函数内部去操作被嵌套的父级函数中的变量的话: Python 2.x:把变量弄进一个列表中的第1个值,index=0,然后就可以在嵌套函数中,获得该list列表变量,操作其中第1个值了。 Python 3.x:把...
  • python函数全局变量和局部变量

    千次阅读 2013-12-02 18:20:06
    #!/usr/bin/python #coding:utf8 x = 'i am global var'#全局变量 def fun(): x = 100 #局部变量 global y #强制声明全局变量 y = 200 print x fun() #局部变量 x=100 print x #全局变量
  • python中,我们可以用一个变量来存放函数。示例: a = len length = a([1,2,3,4,5]) print(length) 在上面我将len()函数赋值给了变量a。那么我们以后我们使用len()函数的的时候就完全可以使用a这个变量来代替了。...
  • Python函数是否能使用全局变量

    千次阅读 多人点赞 2019-07-06 22:31:18
    Python函数中的变量,既可以使用局部变量(本地名字空间的变量),也可以使用全局变量(全局名字空间的变量),函数在执行查找变量只读时,先在局部变量中查找,找不到再查到全局变量中查找。因此当局部变量和全局...
  • python中全局变量与局部变量

    万次阅读 多人点赞 2019-03-01 15:27:17
    python中全局变量与局部变量 ...局部变量只在函数体内部有效,出了函数体,外面是访问不到的,而全局变量下面的代码都有效。 在函数体内部使用全局变量 全局变量可以直接在函数体内容部使用的,你可以直接访问,...
  • Python变量函数函数名存在变量

    千次阅读 2013-03-22 20:13:09
    转自: ...   在PHP等语言中有变量函数(Variable Function)这一说法,意思就是将函数名存在变量中,然后根据变量值动态的调用需要的函数。...下面我们就来实现Python变量函数。 def foo(): pr
  • Python函数

    万次阅读 多人点赞 2020-10-10 20:25:56
    初识Python中的函数1.1 函数的结构1.2 函数的返回1.3 函数的参数1.4 参数传递的处理1.5 变量作用域(L->E->G->B)2. 各种函数2.1 匿名函数lambda2.2 偏函数2.3 高阶函数3. 闭包4. 装饰器 1. 初识Python中的...
  • 当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的。这称为变量的 作用域 。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点...
  • Python函数如何定义变量

    千次阅读 2018-03-18 22:16:27
    Python中进行变量定义时,如果定义不好,会导致变量异常。如下文的变量定义方式:a=[['1','2','3'], ['2','3','4']] b=a[0] for i in range(len(a[0])): b[i]=a[1][i]此时分别打印a和b的结果[['2', '3', '4'], ...
  • 例一:a = 9 def b(): print(a) 结果打印出来是:9 a 是定义在函数外部的全局...在函数内部定义的a 是局部变量,当我们调用函数b的时候,函数内部打印的是局部变量函数外部打印的是全局变量a,并没有改变外部的全局
  • Python global全局变量函数详解

    千次阅读 2020-02-11 21:59:32
    global全局变量在一个脚本中全部作用域都可以访问,用法很方便,希望本文大家有所帮助 global语句的作用 在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉...
  • python函数里引用全局变量

    千次阅读 2019-08-05 14:47:18
    python在引用变量的时候尤其要注意变量的作用域,在函数里引用不可变类型变量的时候,函数执行结束后是不会改变全局变量的值的;若想在函数里改变不可变类型全局变量的值时,引用的时候要用”global arg";对于可变...
  • python 函数内部修改全局变量

    万次阅读 2018-06-12 11:26:05
    但是当 在函数内部进行其 赋值操作时,需要用global修饰该全局变量,因为赋值操作默认作为局部变量全局变量进行赋值修改,需要进行显示global声明 每一次读取file_content时候,读取完或者开始读取的时候要...
  • python函数中改变外部变量

    千次阅读 2019-10-13 10:41:34
    python函数中改变改变外部变量 python函数中修改变量值的方法 和其他语言不一样,传递参数的时候,python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。实际上,这种...
  • 熟悉Java的人在学习Python的时候可能会由于写Java代码的习惯,会为class内部的成员变量写一下get和set函数,然后外部通过get和set函数访问,而不是直接访问成员变量。例如,可能会写出下面类似的代码:   ...
  • python创建函数内部静态变量

    千次阅读 2019-07-11 20:49:55
    c语言中有函数内部的静态变量,可以使得在调用函数时,变量的值为上一次退出该函数变量的值,python中也有办法实现同样的功能,示例代码如下: def test(): if ( not hasattr(test,'x') ): #hasattr函数的第一个...
  • Python函数中的变量作用域

    千次阅读 2019-09-12 00:03:23
    一、变量作用域 一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。 变量的作用域决定了在...局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问...
  • python 中的 global 关键字到底是啥原理?本文将深入浅出的介绍清楚这个问题
  • #encoding:utf-8 class TestClass(object): classval1 = 100 #类变量 def __init__(self): self.memval2 = 200 #成员变量 def memfuntion(self,val = 400): localval3 = 300 #函数内部的局部变量 self.nmval

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 472,549
精华内容 189,019
关键字:

对函数变量的访问形式python

python 订阅