python 零散记录(五) import的几种方式 序列解包 条件和循环 强调getattr内建函数

用import关键字导入模块的几种方式:

#python是自解释的,不必多说,代码本身就是人可读的

import xxx
from xxx import xxx
from xxx import xx1,xx2,xx3
from xxx import *
import xxx as xxx
from xxx import xxx as xxx

序列解包赋值:

x,y,z = 1,2,3    #右侧1,2,3实际是一个(1,2,3)的tuple,然后解包出来再分别赋值

x,y = y,x            #同理,交换赋值

if和布尔:

#True False 实际就是1 0 同样可拿来运算
True + 1 == 2
False - 1 == -1

#bool(xx):  #将表达式转换为布尔值
'''注意:'''#虽然[]与{}都是假值,但是他俩之间直接比较是不相等的
[] != {}
#这样才相等
bool([]) == bool({}) == False

#比较运算符:
    x is y   #x与y是同一个对象引用
    x is not y #同上一个道理
    #is 关键字比较的是同一性,==比较的是相等性

    #可以连续比较:
        1<2<3 == 1<2 and 2<3

    #布尔运算符:
        and or not
        
        #模拟bool:a?b的三元运算符
             #方法1
             (bool and [a] or [b])[0]
             #首先知道,[a] [b]都是真值
             #当bool为True时,and 运算结果为[a],or运算结果也为[a],再[0]取出a
             #当bool为False时,and结果为False,or结果取决于[b],再[0]取出b
    
            #方法2
            a if b else c #b 为1时,则a 否则c

循环:

#for 多用于序列或可迭代对象

range(a, b):
    #包含下限不含上限,生成列表

zip(list1, list2);
    #将两个序列压缩在一起,形如:[(list1[1],list2[1]),(list1[2],list2[2])]
    #长度不同时取短的那个

while True/if break#很好用,代码整洁又没有重复

for/else:
    for n in range(10):
        if xxx:
            break
        else:
            #dosomething

强调一个内建函数:

#强调一个内建函数 getattr
l = [1,2,3,4]
l.pop()

func = getattr(l, 'pop')
func()

#上面两小段代码是一样的效果 都是弹出最后的元素

#getattr字面就是返回属性,返回 参数 l 的 pop 属性
原文地址:https://www.cnblogs.com/lipijin/p/3283997.html