Python入门程序【八】

程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂。

# 基本类型
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
False

Python中有一个有趣的语法,只要定义类型的时候,实现__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 , 4

python中的枚举

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幽蓝丶流月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值