python全局变量

python __main__,类变量

匆匆过客 提交于 2020-02-26 18:38:30
python __main__中的变量是全局变量? main 函数内的变量不是全局变量,而是局部变量 只不过它的生命周期和全局变量一样长 全局变量一定是定义在函数外部的 如何理解python的 main ? 当.py文件被直接运行时, if __name__ == '__main__' 之下的代码块将被运行; 当.py文件以模块形式被导入时, if __name__ == '__main__' 之下的代码块不被运行。 如何区分类的全局变量和局部变量? class G(): fly = False #类中的全局变量 def __init__(self): selg._age = 1 #加一个下划线,是一种不成文的规定,意思是该变量是私有变量 self.long = 2 #普通变量 self.__width = 3 #有两个下划线,是一种“真”私有变量 def run(self): r = 4 #局部变量 print("I am running!.") 来源: https://www.cnblogs.com/zhanghaibin16/p/12367822.html

Python命名空间和作用域

拈花ヽ惹草 提交于 2020-02-12 17:53:26
Python命名空间和作用域: 变量拥有匹配对象的名字,命名空间包含了变量的名称(键)和所指向的对象(值)。 Python表达式可以访问局部命名空间和全局命名空间 注:当局部变量和全局变量重名时,使用的是局部变量 每个函数和类都具有自己的命名空间,称为局部命名空间 如果需要在函数中使用全局变量,可以使用 global 关键字声明,声明后,Python会将该关键字看作是全局变量 # global 全局变量名: # 在函数中使用全局变量,可以对全局变量进行修改。 # 注:如果只是在函数中使用了和全局变量相同的名字,则只是局部变量 # 定义全局变量 total total = 0 def add(num1,num2): # 使用 global 关键字声明全局变量 total global total total = num1 + num2 # 输出全局变量 print(total) add(4,6) # 10 # 输出全局变量 print(total) # 10 2020-02-12 来源: https://www.cnblogs.com/hany-postq473111315/p/12299536.html

Python全局变量和局部变量

╄→гoц情女王★ 提交于 2020-02-12 11:35:24
Python全局变量和局部变量: 定义在函数内的为局部变量,在外部访问局部变量会出现未定义的错误 定义在函数外的变量称为全局变量,可以在整个函数范围内访问 当函数中存在与全局变量重名的变量,以函数中的局部变量为准 定义在函数中的局部变量的作用域只在函数中 # 定义全局变量 total total = 0 def add(num1,num2): # 定义局部变量 total total = num1 + num2 # 输出局部变量 print(total) add(4,6) # 10 print(total) # 0 在函数内部,如果想要修改外部变量时,可以使用 global 或 nonlocal 关键字 global 全局变量名: 在函数中使用全局变量,可以对全局变量进行修改。 注:如果只是在函数中使用了和全局变量相同的名字,则只是局部变量 # 定义全局变量 total total = 0 def add(num1,num2): # 使用 global 关键字声明全局变量 total global total total = num1 + num2 # 输出全局变量 print(total) add(4,6) # 10 # 输出全局变量 print(total) # 10 nonlocal 嵌套作用域中的变量(嵌套函数,外层函数与内层函数之间): 修改嵌套函数之间的变量 #

Python global全局变量函数详解

烈酒焚心 提交于 2020-02-12 04:38:35
本文详解了global全局变量函数的用法,还有global的作用。global全局变量在一个脚本中全部作用域都可以访问,用法很方便,希望本文对大家有所帮助 global语句的作用 在编写程序的时候,如果想为一个在函数外的变量重新赋值,并且这个变量会作用于许多函数中时,就需要告诉python这个变量的作用域是全局变量。此时用global语句就可以变成这个任务,也就是说没有用global语句的情况下,是不能修改全局变量的。 在python的函数使用时,经常会碰到参数定义的问题。如果不声明全局变量,会报错 count = 1 def cc(): count = count+1 cc() Traceback (most recent call last): File "<ipython-input-17-f6b58c567c1a>", line 1, in <module> cc() File "<ipython-input-16-aab94f1185b9>", line 2, in cc count = count+1 UnboundLocalError: local variable 'count' referenced before assignment 意思是说count为局部变量,在使用它之前没有被赋值。在函数内无法直接使用全局变量。 num = 1 id(num) Out[31

Python跨文件全局变量的实现方法示例

那年仲夏 提交于 2020-02-12 04:35:25
我们在使用Python编写应用的时候,有时候会遇到多个文件之间传递同一个全局变量的情况。所以下面这篇文章主要给大家介绍了关于Python跨文件全局变量的实现方法,需要的朋友可以参考借鉴,下面来一起看看吧。 前言 在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如: int a = 5; void test(void) { a = 1; // 没有先声明,所以用的是全局的变量a } void test1(void) { int a; a = 2; // 前面声明了,所以用的是局部变量a,对其所做的修改不会影响全局变量a } void main(void) { printf("before: a = %d\n", a); test(); printf("after test: a = %d\n", a); test1(); printf("after test1: a = %d\n", a); } 在python中,变量不需要先声明,直接使用即可。 Python跨文件全局变量的实现 Python 中 global 关键字可以定义一个变量为全局变量,但是这个仅限于在一个模块(py文件)中调用全局变量,在另外一个py文件 再次使用 global x 也是无法访问到的,因为在这个py模块中并没有一个叫做x的变量,于是就会报错 未定义。

python零基础二

一曲冷凌霜 提交于 2020-02-01 01:55:08
""" 函数参数的分类: 1.位置参数 2.关键字参数 3.默认参数 4.可变参数 *args 可以给0,1,多个任意类型的实参 **kwargs 可以给0,1,多个键值对类型的实参 函数参数传递的方式: 实参->形参 值? 基本类型 在函数内操作,对源数据没有任何影响 地址? 可变类型 在函数内操作,源数据同样会发生改变 递归函数 直接或者间接调自己 递归本质: 压栈操作 栈的工作原理(弹夹原理:先进后出 FILO) 斐波那契数列 汉诺塔(课下查) 青蛙跳台阶 递归错误:栈溢出错误 命名空间: 分类: 内置 全局 globals() 局部 locals() 加载顺序: 内置 -> 全局 -> 局部 B G L 搜索顺序: 局部 -> 全局 -> 内置 L G B 作用域(LEGB) L: 局部 当前函数 E: 闭包 嵌套函数的内部函数中 G: 全局 当前文件中的所有函数 B: 内置 所有文件 """ a = 10 def func1 ( c = 10 ) : d = 20 print ( locals ( ) ) print ( a ) def func2 ( ) : x = 10 print ( x ) def func3 ( ) : print ( a ) # print(globals()) print ( __name__ ) print ( __file__ )

Python:函数和代码复用

落爺英雄遲暮 提交于 2020-01-28 12:55:15
1、关于递归函数的描述,以下选项中正确的是 A.包含一个循环结构 B.函数比较复杂 C.函数内部包含对本函数的再次调用 D.函数名称作为返回值 答案:D 答案解析:递归函数是指函数内部包含对本函数的再次调用。 2、关于递归函数基例的说明,以下选项中错误的是 A.递归函数必须有基例 B.递归函数的基例不再进行递归 C.每个递归函数都只能有一个基例 D.递归函数的基例决定递归的深度 答案:C 答案解析:每个递归函数至少存在一个基例 3、以下选项中,不属于函数的作用的是 A.提高代码执行速度 B.复用代码 C.增强代码可读性 D.降低编程复杂度 答案:C 答案解析:函数的作用是复用代码、增强代码可读性、降低编程复杂度,而并不能提高代码的执行速度。 4、假设函数中不包括global保留字,对于改变参数值的方法,以下选项中错误的是 A.参数是列表类型时,改变原参数的值 B.参数是整数类型时,不改变原参数的值 C.参数是组合类型(可变对象)时,改变原参数的值 D.参数的值是否改变与函数中对象的操作有关,与参数类型无关 答案:D 答案解析:python里有可变对象和不可变对象之分。只有传入的是不可变对象时,值才不发生改变,若是可变对象,值的传入需要注意。不可变对象:Number ,String ,Tuple,bool。可变对象: List , Set , Dictionary是可以改变内部的元素

#12 Python函数

孤街浪徒 提交于 2020-01-28 04:34:37
前言 矩形的面积 S = ab,只要知道任一矩形的的长和宽,就可以带入上式求得面积。这样有什么好处呢?一个公式,适用于全部矩形,一个公式,重复利用,减少了大脑的记忆负担。像这类用变量代替不变量的思想在数学中称为函数,Python中,也有类似的思想! 一、什么是函数 在数学中,函数是指输入集合与输出集合存在一种特定的映射关系,这种映射关系可以被广泛使用。在Python中,函数是指将一定量的代码块使用一个指定的函数名通过特有的语法封装起来的代码块。 函数优点: 大大减少重复代码 可以重复使用 程序具有扩展性 程序代码结构性提高 二、函数初始化 现在是不是觉得函数特🐮,来一起看看如何定义一个函数吧: In [1]: def func(): # func是函数名,可随意更改 ...: print('A') # 函数的内容 ...: print('B') ...: print('C') 看完上面定义方法,其实可以发现其定义语法规则: 函数初始化以关键字 def 开头,之后接函数名和一对圆括号,再加一个冒号 函数的内容使用缩进 但是,这并不是一个标准的函数写法,标准的函数应当还有一个非常重要的部分,那就是函数的说明,放在函数名的下面,用三引号引起来,例如: In [2]: def func(): ...: ''' ...: function's description #

变量进阶

北慕城南 提交于 2020-01-27 03:54:07
01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1.1 引用的概念 在 Python 中 变量 和 数据 是分开存储的 数据 保存在内存中的一个位置 变量 中保存着数据在内存中的地址 变量 中 记录数据的地址 ,就叫做 引用 使用 id() 函数可以查看变量中保存数据所在的 内存地址 注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用 变量 不再 对之前的数据引用 变量 改为 对新赋值的数据引用 1.2 变量引用 的示例 在 Python 中,变量的名字类似于 便签纸 贴在 数据 上 定义一个整数变量 a ,并且赋值为 1 代码 图示 a = 1 将变量 a 赋值为 2 代码 图示 a = 2 定义一个整数变量 b ,并且将变量 a 的值赋值给 b 代码 图示 b = a 变量 b 是第 2 个贴在数字 2 上的标签 1.3 函数的参数和返回值的传递 在 Python 中,函数的 实参 / 返回值 都是是靠 引用 来传递来的 def test(num): print("-" * 50) print("%d 在函数内的内存地址是 %x" % (num, id(num))) result = 100 print("返回值 %d 在内存中的地址是 %x" % (result

Python基础语法之全局变量

半城伤御伤魂 提交于 2020-01-26 11:18:49
全局变量报错:UnboundLocalError: local variable 'i' referenced before assignment。 原因:函数内部不能直接修改全局变量,如需修改,使用关键字global 在程序中设置的i,sum属于全局变量,而在函数中没有i,sum的定义,根据python访问局部变量和全局变量的规则:当搜索一个变量的时候,python先从局部作用域开始搜索,如果在局部作用域没有找到那个变量,那样python就在全局变量中找这个变量,如果找不到抛出异常(NAMEERROR或者Unbound-LocalError,这取决于python版本。) 如果内部函数有引用外部函数的同名变量或者全局变量,并且对这个变量有修改.那么python会认为它是一个局部变量,又因为函数中没有i,sum的定义和赋值,所以报错。 来源: CSDN 作者: jin_12356 链接: https://blog.csdn.net/qq_36346415/article/details/103753146