a001-python 基础知识点

1、三引号输出内容到一行

输出到同一行,在行的末尾加 \

a = '''abcd
    ABCD
'''
print(a)
print('----------------')
b = '''abcd\
    ABCD
'''
print(b)

输出结果:

abcd
    ABCD

----------------
abcd    ABCD

2、统计字符串各字符量

a = 'hello python'
# a = ['h', 'e', 'l', 'l', 'o', ' ', 'p', 'y', 't', 'h', 'o', 'n']

# 法一
b = set(a)
print(b)    # {'y', 'o', 't', 'l', 'p', 'n', 'e', 'h', ' '}
c = {_: a.count(_) for _ in b}
print(c)    # {'y': 1, 'o': 2, 't': 1, 'l': 2, 'p': 1, 'n': 1, 'e': 1, 'h': 2, ' ': 1}

# 法二
from collections import Counter
d = dict(Counter(a))
print(d)    # {'h': 2, 'e': 1, 'l': 2, 'o': 2, ' ': 1, 'p': 1, 'y': 1, 't': 1, 'n': 1}

3、字典 key 之不可变

字典 key 是不可变的,可以是 数值、字符串、元组(不能直接或间接包含可变数据类型的)。

4、元组之不可变

元组是不可变数据类型,是指元组的元素(不包括孙子元素)所指向的内存地址不能改变。

a = (1, 2, [3, 4], (5, 6))
# a[1] = 'tom'      # 报错
# a[2] = 'cat'      # 报错
a[2][0] = 30
print(a)            # (1, 2, [30, 4], (5, 6))
# a[3][0] = 50    # 报错

5、字典取 keys 并排序

获取字典 keys 方法很多,下面介绍不常见但很实用的方法。

  • 对一个字典执行 list(dict) 将返回包含字典所有键的一个列表,列表元素(key)顺序为字典key插入的顺序。
a = {'name': 'tom', 'age': 10, 'sex': 'm'}
a['cls'] = 'one'
a['ax'] = 'two'
print(a)    # {'name': 'tom', 'age': 10, 'sex': 'm', 'cls': 'one', 'ax': 'two'}

b = list(a)
print(b)    # ['name', 'age', 'sex', 'cls', 'ax']
  • 返回字典所有的键并排序,可以使用 sorted(dict)。
a = {'name': 'tom', 'age': 10, 'sex': 'm'}
a['cls'] = 'one'
a['ax'] = 'two'
print(a)    # {'name': 'tom', 'age': 10, 'sex': 'm', 'cls': 'one', 'ax': 'two'}

b = sorted(a)
print(b)    # ['age', 'ax', 'cls', 'name', 'sex']

6、下面输出结果是

例1:

class A(object):
    x = 1

class B(A):
    pass

class C(A):
    pass

>>> B.x = 2
>>> print(A.x, B.x, C.x)	

>>> A.x = 3
>>> print(A.x, B.x, C.x)

输出结果为:

1 2 1
3 2 3

分析:
B.x 赋值之前,A.x, B.x, C.x 都引用的是 A类的类变量 x。
B.x 赋值之后,B.x 是 B类拥有了自己的类变量 x(而非 A类变量x),A.x, C.x 都引用的是 A类的类变量 x。

例二:

import time

class Item:

    def __init__(self, name, price):
        self.name = name
        self.price = price

    # 定义析构函数,对象在销毁前调用
    def __del__(self):
        print('del 删除对象')


if __name__ == '__main__':
    obj = Item('apple', 10)
    x = obj

    print(id(x), id(obj))

    del obj
    print('----------------')
    print('end')

    time.sleep(3)
    print(x.name)

    # print(obj.name)   # 会报错,因为前面已经删除了 obj 对象与 Item 对象的引用关系

输出:

2212862269136 2212862269136
----------------
end
apple
del 删除对象

del 删除对象 为什么最后打印?
分析:因为 del() 是在对象销毁的时候调用的。

7、类继承之方法和属性

类的 私有方法和属性(双前缀下划线,没有后缀下划线):

  • 对继承无效
  • 外部不能直接调用
    类的 非公有(保护)方法和属性(单前缀下划线,没有后缀下划线):
  • 对继承类有效
  • 不允许外部直接调用(但 python 对此无直接限制,需要开发人员自己保证,通常可通过 pylint 检查发现)
class A():
    name = 'tom'
    _age = 5
    __sex = 'f'

    def __index__(self):
        pass

    def _fun1(self):
        self._attr = 1

    def __func2(self):
        self.__attr2 = 2

    def func3(self):
        pass


class B(A):
    pass


if __name__ == '__main__':
    a = A()
    a.name
    a._age
    # a.__sex     # 报错

    b = B()
    b.name
    b._age
    # b.__sex     # 报错

    b._fun1()
    # b.__fun2()      # 报错
    b.func3()

8、列表切片拷贝

对列表(可变对象)切片相当于浅拷贝。

a = [1, 2, 3, [4, 5, 6]]
b = a[:]
print(id(a), id(b))
b[1] = 22
print(a, b)
b[3][0] = 11
print(a, b)

输出结果:

2354352755840 2354352763584
[1, 2, 3, [4, 5, 6]] [1, 22, 3, [4, 5, 6]]
[1, 2, 3, [11, 5, 6]] [1, 22, 3, [11, 5, 6]]

9、列表转元组查找数据

在进行大数据的查找时,如果数据类型是列表,最好先将列表转换成元组,再进行查找。因为元组的查询效率要高于列表。

10、命令行执行文件

-t 选项来启动 python 命令行解释器,会就代码中混用空格和跳格的位置进行警告信息。
-tt 选项,会升级成错误信息。

强烈推荐使用这些选项执行 py 文件。
例:

# YES
python -t demo.py
python -tt demo.py

# NO
python demo.py

11、命名规范

  • 包命名尽量短小,使用全部小写的方式,不可以使用下划线。
  • 模块命名尽量短小,使用全部小写的方式,可以使用下划线。
      模块名就是 py 文件名。
  • 类的命名使用 CapWords 的方式,模块内部使用的类采用 _CapWords 的方式。如:AddDevDlg。
  • 异常命名使用 CapWords + Error 后缀的方式。
  • 函数命名使用全部小写的方式,可以使用下划线。
  • 常量命名使用全部大写的方式,可以使用下划线。如:MAX_OVERFOLW。
  • 类的属性(方法和变量)命名使用全部小写的方式,可以使用下划线。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值