python全局变量

Python—全局变量、局部变量、匿名函数

独自空忆成欢 提交于 2019-12-18 10:50:04
局部变量和全局变量 1 college1 = 'JMU'    #全局变量 2 def change_name(name): 3 college1 = 'LiGong' #局部变量,此函数是其作用域 4 # global school #可以在函数内定义全局变量,这样在函数外调用函数体内的school则不会报错。但是千万不要这么干!不要在函数体内定义全局变量 5 # school = 'jmu' 6 print("before change:%s"%name,college1) 7 name = 'GKX' #局部变量,此函数是其作用域 8 print('After change:%s'%name) 9 10 name = 'gkx' 11 change_name(name) 12 print('now name is:%s'%name) 13 print(college1) 14 >>>>>> 15 before change:gkx LiGong  #在函数体内部college的值是 ‘LiGong’,在其作用域内 16 After change:GKX 17 now name is:gkx       #在函数外name的值还是gkx 18 JMU              #在函数外college的值还是JMU 局部变量不能改全局变量主要是只字符串和数值,一些复杂的数据结构

一. python函数基础知识

一曲冷凌霜 提交于 2019-12-17 01:16:45
一. 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数, 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。 #语法 def 函数名(参数1,参数2,参数3,...): '''注释''' 函数体 return 返回的值 #函数名要能反映其意义 def auth(user:str,password:str)->int: if user == '111' and password == '111': return 1 # print(auth.__annotations__) #{'user': <class 'str'>, 'password': <class 'str'>, 'return': <class 'int'>} user=input('用户名>>: ').strip() pwd=input('密码>>:

Python - 函数篇

久未见 提交于 2019-12-10 04:18:38
本章内容 函数 参数介绍 全局变量和局部变量 嵌套函数 匿名函数 前言   函数,说白了就是一是一个公式。我们读书的时候学习的一元函数、二元函数这之类的都是函数,在数学中函数的作用是为了是我们解题更轻松、更简单。而我们编程中的函数则是封装功能,以便于后续的使用。 一、函数 函数是 Python 为了代码最大程度的重用和最小化代码冗余而提供的最基本的程序结构。 函数就是对功能的封装,比如我们写了一个用户验证程序,而现在我又需要写一个用户管理系统,管理系统中有很多的操作,要求用户每进行一步操作就要进行一次用户验证(哈哈,实际情况肯定不会这样,这里用来举例),我们是不是要把用户验证程序的代码复制粘帖到每一步操作的开头?答案是的!卧槽,这也太坑爹了,那如果我有一万个操作呢?你还就别说我就复制粘帖一万次,复制粘帖 Python提供了许多内建函数,比如print () ,当然我们也可以自己定义一个函数,即用户自定义函数。 函数语法: def 函数名(参数):   功能1   功能2   ······   return 返回值(可以无返回值) 简单实例 1 def main(name): 2 #定义函数名为main,形参为name 3 4 if name == "Lyon": 5 #如果实参name等于 "Lyon" 6 7 print("Welcome Lyon !") 8 #打印内容 9

Python定义全局变量的用法

丶灬走出姿态 提交于 2019-12-06 17:44:14
全局变量是编程语言中常见的一种变量,通过全局定义,可以是某对象函数创建,也可以是本程序任何位置创建,能够被本程序中的所有对象或函数进行引用,全局变量的定义有利于程序的变量共享,简化了添加和修改的程序。 和C语言一样,Python也具有全局变量,其定义全局变量的用法有两种: 1. 声明法 该方法是直接在当前模块中进行全局变量定义声明,使用global的声明方式,再进行引用! OLD_URL='http://oldboyedu.com' def bb(): global OLD_URL OLD_URL = OLD_URL +'#m' if __name__=='__main__': bb() print OLD_URL #输出: http://oldboyedu.com#m 2. 模块法 该方法是把全局变量定义在一个单独模块中,然后在需要使用的全局模块中将定义的全局变量模块导入 #gl.py 全局变量模块定义 GL_A=‘hello’ GL_B=’world’ #test.py 全局变量引用模块 import gl def hello_world() print gl. GL_A, GL_B 输出helloworld 来源: CSDN 作者: lmseo5hy 链接: https://blog.csdn.net/lmseo5hy/article/details/81704426

python线程互斥锁Lock(29)

落爺英雄遲暮 提交于 2019-12-05 18:10:31
在前一篇文章 python线程创建和传参 中我们介绍了关于python线程的一些简单函数使用和线程的参数传递,使用多线程可以同时执行多个任务,提高开发效率,但是在实际开发中往往我们会碰到线程同步问题,假如有这样一个场景:对全局变量累加1000000次,为了提高效率,我们可以使用多线程完成,示例代码如下: # !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解忧 @Blog(个人博客地址): shuopython.com @WeChat Official Account(微信公众号):猿说python @Github:www.github.com @File:python_thread_lock.py @Time:2019/10/17 21:22 @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累! """ # 导入线程threading模块 import threading # 声明全局变量 g_num = 0 def my_thread1(): # 声明全局变量 global g_num # 循环 1000000 次,每次累计加 1 for i in range(0,1000000): g_num = g_num + 1 def my_thread2(): # 声明全局变量

python中的函数作用域

半城伤御伤魂 提交于 2019-12-05 14:53:11
1.作用域的介绍:# 也叫名称空间 全局名称空间:创建的储存"变量名与值的关系"的空间叫做全局名称空间 # 局部名称空间:在函数的运行中开辟出来的空间叫做局部名称空间 #并非单指函数,例如在模块中,在类中的简单赋值操作都是局部作用域 内置名称空间:内置名称空间中存放了python解释器为我们储存的的函数,例如len(),print(),list()...都是python为我们创建好的内置函数。 python中的作用域分4中情况: * L : local,局部作用域,函数中定义的变量 * E : enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的(闭包常见) * G : globa,全局变量,是模块级别定义的变量 * B : bulit-in,系统固定模块里的变量,就是内置空间定义的 int(),print(),list() 加载变量的优先级顺序依次是:python内置作用域>当前模块中的全局(文件从上而下读取)>外层作用域>局部作用域 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEJB local 和 enciosing 是相对的,enclosing 变量相对上层来说也是 local 内置作用域 : x = int(2.9)# int就是内置作用域。(bulit-in)

Python下的Global变量

与世无争的帅哥 提交于 2019-12-05 03:18:11
Python中的变量分为局部变量和全局变量两种 def func(): a = 1 a = a * 8 print(a) a = 100 func() 这里 a = 1 表示的是局部变量,而 a = 100 表示的是全局变量,这里与普通的C程序是一样的 Python中需要注意的一点是在于全局变量的使用 def func(): a = a * 8 print(a) a 大专栏 Python下的Global变量 = 100 func() 上面代码如果运行,则会出现报错 UnboundLocalError: local variable 'a' referenced before assignment 原因是在局部域内虽然可以直接调用全局变量,但如果需要修改全局变量,需要添加 global a 的语句进行标记 正确的代码应该为 def func(): global a a = a * 8 print(a) a = 100 func() 这样就可以正常运行了 来源: https://www.cnblogs.com/liuzhongrong/p/11902183.html

Python语法速查: 7. 函数基础

佐手、 提交于 2019-12-04 15:09:22
/*--> */ /*--> */ (1)函数基本 ● 函数是第一类对象 Python中万物皆对象,所有对象都是 第一类的 (first class),函数也不例外,也是第一类对象。既然是对象,那就可以当作普通的对象数据处理,比如:拥有自己的属性、可赋值给一个变量、可放入容器存储、可作为另一个函数的参数或是返回值等等。当你在使用 def 定义函数时,就相当于生成了一个函数对象。 下例中,将3个内置函数放入一个序列,并用迭代器取出后分别调用: line = 'abc,1,3.14' fun_list = [str, int, float] para_list = line.split(',') obj_list = [f(val) for f, val n zip(fun_list, para_list)] # obj_list结果为:['abc', 1, 3.14] ● 文档字符串 通常,将函数def后的第一行,作为描述函数用途的“文档字符串”,保存在函数的__doc__属性中。用内置函数 help( 函数名 ) 也可以查看函数的描述文档。 ● 可调用类型 可调用类型表示支持函数调用操作的对象,包括:用户定义的函数、内置函数、实例方法、类、提供了可调用接口的实例。可以使用内置函数 callable() 来检查一个对象是否是可调用的。 类都是是可以调用的,调用类时

[Python]变量进阶

风流意气都作罢 提交于 2019-12-04 04:10:20
变量进阶 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数的参数传递 以及 返回值 都是靠 引用 传递的 => Python的 函数参数 和 返回值 是引用,注意不是值传递 引用的概念 在 Python 中 变量 和 数据 是分开存储的=>数据保存在内存中的一个位置,变量中保存着数据在内存中的地址 变量 中 记录数据的地址 ,就叫做 引用 => 引用和指针的差别,引用定了就不能改变了,但是指针是可以改变的 使用 id() 可以查看变量中保存数据所在的 内存地址 注意: 如果变量已经被定义了,当给一个变量赋值的时候,本质上 修改了数据的引用 => 再赋值是修改了变量的引用 变量 不再 是之前的数据引用, 改为 对新赋值的数据引用 a = [] print(id(a)) b = a # 理解以下,变量实际上存储了是封装的内存地址 print(id(b)) # id(a)和id(b)是一样的 变量引用的示例 在 Python 中,变量的名字类似于 便签纸 贴在 数据 上 函数的参数和返回值的传递 函数参数引用传递 def test(num): # 函数内部传进来的内存引用与函数外的内存引用一致 print("在函数内部 %s 对应的 内存地址是 %s" % (num, id(num))) # 1. 定义一个数字的变量 a = 10 #

函数的名称空间和作用域

对着背影说爱祢 提交于 2019-12-04 03:58:22
命名空间 一、什么是python的名称空间 名称到对象的映射。命名空间是一个字典的实现,键为变量名,值是变量对应的值。各个命名空间是独立没有关系的,一个命名空间中不能有重名,但是不同的命名空间可以重名而没有任何影响。 通俗讲:名称空间就是存放名字的地方,三种名称空间,(之前遗留的问题x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方) 原文链接:https://blog.csdn.net/lmseo5hy/article/details/80353099 二、名称空间的分类 内置名称空间 (Built-in)    存放着python的内置名称,如内置语言的名称如 len,char 和一些异常的名称 BaseException等,在任何模块都可以被调用,且随着python解释器的启动而产生,关闭而回收,因此它是第一个被加载的名称空间. >>> len <built-in function len> 全局名称空间    模块中定义的名称,记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量,伴随着python文件的执行而产生 局部名称空间    函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量,只有调用函数时才会产生,调用完成时便会被回收 >>> def func(): ... a = 1 ... >>> a