python defined是什么意思_[基础]Python判断变量是否定义

判断变量是否定义

# 如果C有值就取C,否则自定义为8

a = 8 if not c else c

Traceback (most recent call last):

File "", line 1, in

a = 8 if not c else c

NameError: name 'c' is not defined

呵呵,结果,发现c未定义,not defined,不是None

碰到这种问题该怎么解决呢?

目前判断变量有二种方式:

一般方式:try···except

try:

a = 8 if not c else c

except:

a = 8

dir() /local()判断

我们先来看看IDLE 上他们的表现

Python 3.4.3 (default, Oct 14 2015, 20:28:29)

[GCC 4.8.4] on linux

Type "copyright", "credits" or "license()" for more information.

>>> dir()

['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']

>>> locals()

{'__doc__': None, '__package__': None, '__builtins__': , '__spec__': None, '__name__': '__main__', '__loader__': }

>>> locals().key()

dict_keys(['__doc__', '__package__', '__builtins__', '__spec__', '__name__', '__loader__'])

我需要判断变量是否在name中

# local() 方式就不介绍了,本质一样

a = 8 if not 'c' in dir() or not c else 8

# 查看一下dir()

['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a']

dir()介绍

中文说明:不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法dir(),该方法将被调用。如果参数不包含dir(),该方法将最大限度地收集参数信息。

参数object: 对象、变量、类型。

版本:该函数在python各个版本中都有,但是每个版本中显示的属性细节有所不同。使用时注意区别。

代码示例:

>>> dir()

['__builtins__', '__doc__', '__name__', '__package__']

>>> import struct

>>> dir()

['__builtins__', '__doc__', '__name__', '__package__', 'struct']

>>> dir(struct)

['Struct', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into', 'unpack', 'unpack_from']

>>> class Person(object):

... def __dir__(self):

... return ["name", "age", "country"]

...

>>> dir(Person)

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__','__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']

>>> tom = Person()

>>> dir(tom)

['age', 'country', 'name']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值