美文网首页
[基础]Python判断变量是否定义

[基础]Python判断变量是否定义

作者: Coffen | 来源:发表于2016-06-01 18:30 被阅读0次

判断变量是否定义

参考:
python中检测某个变量是否有定义
dir介绍
你是否会碰到如下情形:

# 如果C有值就取C,否则自定义为8
a = 8 if not c else c
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    a = 8 if not c else c
NameError: name 'c' is not defined

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

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

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

  1. 一般方式:try···except
try:
    a = 8 if not c else c
except:
    a = 8
  1. 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__': <module 'builtins' (built-in)>, '__spec__': None, '__name__': '__main__', '__loader__': <class '_frozen_importlib.BuiltinImporter'>}
>>> 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']

相关文章

  • [基础]Python判断变量是否定义

    判断变量是否定义 参考:python中检测某个变量是否有定义 dir介绍 你是否会碰到如下情形: 呵呵,结果,...

  • ansible之条件判断

    1.判断目录或文件是否存在 2.判断变量 defined:判断变量是否已经定义,已经定义则为真undefined:...

  • Python30分钟入门语法(与Java对比)

    定义变量: Python定义变量的时候不需要给出类型,直接定义即可,Python会自动判断变量类型。String类...

  • day7 字典元组容器类型基操

    计算机基础随笔 == :判断两个数据的值是否相等 is:判断地址是否相等 python数据存储: 1.给变量赋值的...

  • PHP 基础语法

    PHP基本语法 变量相关的函数 isset() 判断变量是否被定义 empty() 判断变量是否为空值, unse...

  • php基础语法1

    判断变量是否定义 && 判断变量是否为空 九大超全局预定义变量 常量 系统常量和魔术常量 数据类型 数据类型分类 ...

  • Python ABC

    Python基础语法框架笔记 变量 变量声明定义 Python的变量的声明和定义很简单,或者说已经淡化了变量声明和...

  • freemarker系列——常用语法(1)

    1、常用的对变量进行判断的方法?? 判断左侧变量是否为null,或者这个变量是否未定义。如:?has_conte...

  • 基础·变量定义

    Python基础教程 定义 在python中的变量定义之前是不需要添加变量类型的 赋值 使用“=”号来赋值 变量的...

  • PHP面试题61-80

    变量如何定义?如何检查变量是否定义?如何删除一个变量?判断一个变量是否为空的函数?isset()unset()em...

网友评论

      本文标题:[基础]Python判断变量是否定义

      本文链接:https://www.haomeiwen.com/subject/lpbhdttx.html