程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂。
# 基本类型
print(type(None))
print(type(True))
print(type(12345))
print(type(123.45))
print(type(1234.))
print(type('abc'))
# 容器类型
print(type([1, 2, 3, 'a', 'bc']))
print(type((1, 2, 3, 'abc')))
values = ['abc', 1, 2, 3.]
print(type(values[3]))
print(type(set(['a', 1, 2.])))
print(type({'a':123, 4:'bcd', 5:'efg'}))
# 函数
def func(): print(100)
print(type(func))
# 模块
print(type(string))
# 自定义类型与类型实例
class Cls: pass
print(type(Cls))
cls = Cls()
print(type(cls))
# 变量赋值
try:
print(x) # 变量必须先赋值再使用
except NameError:
print("NameError: name 'x' is not defined")
x = 100
x = 'abcd' # x的类型不受限制
结果 :
<class 'NoneType'>
<class 'bool'>
<class 'int'>
<class 'float'>
<class 'float'>
<class 'str'>
<class 'list'>
<class 'tuple'>
<class 'float'>
<class 'set'>
<class 'dict'>
<class 'function'>
<class 'module'>
<class 'type'>
<class '__main__.Cls'>
NameError: name 'x' is not defined认识基础类型
class MyClass:
def __call__(self):
print('You can call cls() directly.')
cls = MyClass()
cls()
print(callable(cls))
print(callable(max))
print(callable([1, 2, 3]))
print(callable(None))
print(callable('str'))
结果 :
You can call cls() directly.
True
True
False
False
FalsePython中有一个有趣的语法,只要定义类型的时候,实现__call__函数,这个类型就成为可调用的。
换句话说,我们可以把这个类型的对象当作函数来使用,相当于 重载了括号运算符。
callable() 函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功
Month = Enum('Monthddd', ('Jan', 'Feb', 'Mar', 'Apr'))
for name, member in Month.__members__.items():
print(name, '=>', member, ',', member.value)
结果:
Jan => Monthddd.Jan , 1
Feb => Monthddd.Feb , 2
Mar => Monthddd.Mar , 3
Apr => Monthddd.Apr , 4python中的枚举
jan = Month.Feb
print(jan)
print(type(Month.Jan))
print(Month.Jan.name)
print(Month.Jan.value)
print(Month.Feb.value)
print(Month.Mar.value)
结果:
Monthddd.Feb
<enum 'Monthddd'>
Jan
1
2
3
from enum import IntEnum
class my_Enum(IntEnum):
red=1,
green=2,
blue=3,
what=3,
yellow=9
#按名字取出枚举的值
print(my_Enum['red'])
print(my_Enum['what'])
#枚举的值返回枚举名字
print(my_Enum(9))
print(my_Enum['red'].name)
print(my_Enum['red'].value)
#可以用for in迭代
for i in my_Enum:
print(i.name,'->',i.value)
结果 :
my_Enum.red
my_Enum.blue
my_Enum.yellow
red
1
red -> 1
green -> 2
blue -> 3
yellow -> 9枚举中各种取值方式,枚举中重复出现的值不起作用,比如what和blue都是3,但是取what的名字却是blue