Python基础笔记

用Python很多年,可感觉学的比较碎片,整理下之前的笔记。 学而时习之。

Python语言基础

语法

  • 那些可以改变对象值的可变对象方法是没有返回值的

约定和语法

  • 4空格对其
  • 一行一个语句,没有;
  • 使用\分割长语句,(和,除外
  • 大小写敏感
  • 只有类名是TitleCased,通常全小写
  • 常量全大写

数据类型

字符串

  • string.uppercase
import random

random.randint(1, 365)

import string
''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(40))

import uuid;
str(uuid.uuid4().get_hex().upper()[0:6])

时间

import datetime, time

dt = datetime.datetime.now()
### 时间转换成字符串
time.strftime("%Y%m%d%H%M%S", time.localtime())

格式化

### 用元组或字典作参数
%(error)s   
%dictionary


    
### 数字转换成字符串并填充位数
'{:07}'.format(1)
'{:.0f}'.format(1.0)
    
### 转换为16进制
str.encode(hex)
"61”.decode(“hex”)

元组

单元素元组应在末尾添加’,‘否则会被作为分组操作符

Lists

是可变的,而strings不是

  • += INPLACE_ADD
  • str.iadd 会复制,但是list.iadd 会改变

deque 双端队列

  • List更适合固定大小;
  • deque支持性能更好的append/pop, 可设定最大队列.

分支控制

# if-else 单值的简洁写法
# value_when_true if condition else value_when_false

'Yes' if fruit == 'Apple' else 'No'

常用模块

常用内置函数

信息、帮助类

  • dir()
  • help()
  • type()
  • getattr(object, name[, default])

操作类

  • int(), str()
  • range()
  • input()/对于py2的raw_input()
  • zip([iterable, …]) : returns a list of tuples
  • map(function, iterable, …): 在每个元素应用函数并返回结果列表
  • sorted(student_tuples, key=itemgetter(2), reverse=True)
from operator import itemgetter, attrgetter

itemgetter = object[item]
attrgetter = object.attr
import sys
# 检查当前版本信息
sys.version_info

字符处理

  • textwrap.dedent
  • codecs: 编解码注册及基类

文件系统,I/O

常用模块

  • shutil: 上层文件操作
  • glob: unix查找规则的文件匹配

pathlib

Python3.4引入,面向对象,更易用. 不建议再使用繁琐的os.path.join

能自动处理操作系统差异.

from pathlib import Path
my_folder = Path("data/testfiles")
my_file = my_folder / "test.txt"

# 直接打开
print(my_file.read_text())
# 其他
print(my_file.name)
print(my_file.suffix)
print(my_file.exists())
print(my_file.absolute().as_uri())

os.path

只适用于偏底层且不被pathlib覆盖的功能.

  • join(dir, file)
  • basename(), dirname()
  • splitext()
  • os.path.expanduser(’~’) 用户主目录
os.walk('.').next()[1]

配置

configparser模块

  • 值没有数据类型,默认存储为字符串型:getboolean、getint、getfloat
  • DEFAULT部分提供所有其他section的默认值
  • section名是大小写敏感,但key不区分大小写并以小写存储
  • 尽量不使用行内注释

学习大纲

基础

  • String, List, Dictionary
  • Loops and Condition
  • File I/O
  • Functions
  • Classes

资源