python3变量与类型说明

python变量不需要预先声明,初次赋值即为定义(根据赋值类型决定变量的类型);但引用前必须保证变量已定义。已定义的变量可通过del(del var)来删除,删除后就不能在引用了。

python按如下顺序查找变量:当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量

python中定义了六种标准数据类型:

数字:int、float、bool(True、False)、complex;

字符串:str;

+:连接字符串;

*:多次复制字符串,'12'*3为'121212';

列表:list,[a,b...]

元组:tuple,(a,c...)

集合:set,

字典:dict,

{}:是创建空字典,创建空集合只能通过set();

变量类型判断,python提供内置函数用于类型判断:

type(var):获取变量类型;

isinstance(var, type):判断是否为指定类型;

type不处理继承关系;判断子类型是否为父类型,需要使用isinstance。

字符串:python3中字符串使用Unicode编码

单引号:可包含双引号;

双引号:可包含单引号;

三引号(三个单或双引号):可以跨多行(可用作注释);

raw字符串:以r开始,使转义失效(r"test\wend"),在正则表达式中非常有用;

长字符串拆行(太长,需要多行表示),可通过:

三引号:会引入换行符;

使用'\':在行尾使用\表示有更多行;

使用括号括起多个字符串:不只用于字符串,也可用于其他语句的分行(()[]{}括起的语句,可直接跨多行):

words = 'cats dog'\

' monkey'

animal = ('cat '

'dog')

if ( words is None

and animal is not None): #括号是必须的

全局变量

在函数中定义的变量默认都是局部变量,若要使用全局变量,则需要通过global关键字引入;内置函数可获取当前变量:

globals():全局变量字典;

locals():局部变量字典;

x='global' #即使没有定义,函数内部通过global引用也正确(会自动生成一个全局的)

def localFun():

global x #必须有此引入语句,否则后面的x会作为局部变量

x='local'

print(x)

localFun() // local

print(x) // local,若函数内部没有通过global引入,则为‘global

global虽然可以在函数内部引入全局变量,但是在跨文件时还是无能为力,为此我们需要通过函数来实现,如定义一个专门的全局变量管理文件:

def _init():#初始化

global _global_vars

_global_vars = {}

def set_value(key,value):

""" 定义一个全局变量 """

_global_vars[key] = value

def get_value(key,defValue=None):

""" 获得一个全局变量,不存在则返回默认值 """

try:

return _global_vars[key]

except KeyError:

return defValue

外层(作用域)变量

nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。以生成一个计数器为例:

def make_counter():

count = 0

def counter():

nonlocal count

count += 1

return count

return counter

mc = make_counter()

print(mc()) #1

print(mc()) #2

其与下面代码等价:

def gen_counter():

count = 0

while True:

count += 1

yield count

gc = gen_counter()

print(next(gc))

print(next(gc))

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180415G0QU2100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券