中文python_base_千行代码入门Python.py 源码

https://raw.githubusercontent.com/hongwenjun/LearnPython/master/python_base.py

-- 寻求帮助:

dir(obj)            # 简单的列出对象obj所包含的方法名称,返回一个字符串列表
help(obj.func)      # 查询obj.func的具体介绍和用法

-- 测试类型的三种方法,推荐第三种

if type(L) == type([]): print("L is list")
if type(L) == list: print("L is list")
if isinstance(L, list): print("L is list")
    

-- Python数据类型:哈希类型、不可哈希类型

# 哈希类型,即在原地不能改变的变量类型,不可变类型。可利用hash函数查看其hash值,也可以作为字典的key
"数字类型:int, float, decimal.Decimal, fractions.Fraction, complex"
"字符串类型:str, bytes"
"元组:tuple"
"冻结集合:frozenset"
"布尔类型:True, False"
"None"
# 不可hash类型:原地可变类型:list、dict和set。它们不可以作为字典的key。

-- 数字常量

1234, -1234, 0, 999999999                    # 整数
1.23, 1., 3.14e-10, 4E210, 4.0e+210          # 浮点数
0o177, 0x9ff, 0X9FF, 0b101010                # 八进制、十六进制、二进制数字
3+4j, 3.0+4.0j, 3J                           # 复数常量,也可以用complex(real, image)来创建
hex(I), oct(I), bin(I)                       # 将十进制数转化为十六进制、八进制、二进制表示的“字符串”
int(string, base)                            # 将字符串转化为整数,base为进制数
# 2.x中,有两种整数类型:一般整数(32位)和长整数(无穷精度)。可以用l或L结尾,迫使一般整数成为长整数
float('inf'), float('-inf'), float('nan')    # 无穷大, 无穷小, 非数

-- 数字的表达式操作符

yield x                                      # 生成器函数发送协议
lambda args: expression                      # 生成匿名函数
x if y else z                                # 三元选择表达式
x and y, x or y, not x                       # 逻辑与、逻辑或、逻辑非
x in y, x not in y                           # 成员对象测试
x is y, x is not y                           # 对象实体测试
x<y, x<=y, x>y, x>=y, x==y, x!=y             # 大小比较,集合子集或超集值相等性操作符
1 < a < 3                                    # Python中允许连续比较
x|y, x&y, x^y                                # 位或、位与、位异或
x<<y, x>>y                                   # 位操作:x左移、右移y位
+, -, *, /, //, %, **                        # 真除法、floor除法:返回不大于真除法结果的整数值、取余、幂运算
-x, +x, ~x                                   # 一元减法、识别、按位求补(取反)
x[i], x[i:j:k]                               # 索引、分片、调用
int(3.14), float(3)                          # 强制类型转换

-- 整数可以利用bit_length函数测试所占的位数

a = 1;       a.bit_length()    # 1
a = 1024;    a.bit_length()    # 11

-- repr和str显示格式的区别

repr格式:默认的交互模式回显,产生的结果看起来它们就像是代码。
str格式:打印语句,转化成一种对用户更加友好的格式。

-- 数字相关的模块

# math模块
# Decimal模块:小数模块
    import decimal
    from decimal import Decimal
    Decimal("0.01") + Decimal("0.02")        # 返回Decimal("0.03")
    decimal.getcontext().prec = 4            # 设置全局精度为4 即小数点后边4位
# Fraction模块:分数模块
    from fractions import Fraction
    x = Fraction(4, 6)                       # 分数类型 4/6
    x = Fraction("0.25")                     # 分数类型 1/4 接收字符串类型的参数

-- 集合set

set是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素。
set支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算。
set支持x in set, len(set), for x in set。
set不记录元素位置或者插入点, 因此不支持indexing, slicing, 或其它类序列的操作
s = set([3,5,9,10])                          # 创建一个数值集合,返回{3, 5, 9, 10}
t = set("Hello")                             # 创建一个唯一字符的集合返回{}
a = t | s;    t.union(s)                     # t 和 s的并集
b = t & s;    t.intersection(s)              # t 和 s的交集
c = t – s;    t.difference(s)                # 求差集(项在t中, 但不在s中)
d = t ^ s;    t.symmetric_difference(s)      # 对称差集(项在t或s中, 但不会同时出现在二者中)
t.add('x');   t.remove('H')                  # 增加/删除一个item
t.update([10,37,42])                         # 利用[......]更新s集合
x in s,  x not in s                          # 集合中是否存在某个值
s.issubset(t); s.issuperset(t); s.copy(); s.discard(x); s.clear()
{x**2 for x in [1, 2, 3, 4]}                 # 集合解析,结果:{16, 1, 4, 9}
{x for x in 'spam'}                          # 集合解析,结果:{'a', 'p', 's', 'm'}

-- 布尔类型bool

type(True)                   # 返回<class 'bool'>
isinstance(False, int)       # bool类型属于整形,所以返回True
True == 1; True is 1         # 输出(True, False)

-- 常见字符串常量和表达式

S = ''                                  # 空字符串
S = "spam’s"                            # 双引号和单引号相同
S = "s

p ax00m" # 转义字符

S = """spam"""                          # 三重引号字符串,一般用于函数说明
S = r'    emp'                            # Raw字符串,不会进行转义,抑制转义
S = b'Spam'                             # Python3中的字节字符串
S = u'spam'                             # Python2.6中的Unicode字符串
s1+s2, s1*3, s[i], s[i:j], len(s)       # 字符串操作
'a %s parrot' % 'kind'                  # 字符串格式化表达式
'a {0} parrot'.format('kind')           # 字符串格式化方法
for x in s: print(x)                    # 字符串迭代,成员关系
[x*2 for x in s]                        # 字符串列表解析
','.join(['a', 'b', 'c'])               # 字符串输出,结果:a,b,c

-- 内置str处理函数:

str1 = "stringobject"
str1.upper(); str1.lower(); str1.swapcase(); str1.capitalize(); str1.title()        # 全部大写,全部小写、大小写转换,首字母大写,每个单词的首字母都大写
str1.ljust(width)                       # 获取固定长度,左对齐,右边不够用空格补齐
str1.rjust(width)                       # 获取固定长度,右对齐,左边不够用空格补齐
str1.center(width)                      # 获取固定长度,中间对齐,两边不够用空格补齐
str1.zfill(width)                       # 获取固定长度,右对齐,左边不足用0补齐
str1.find('t',start,end)                # 查找字符串,可以指定起始及结束位置搜索
str1.rfind('t')                         # 从右边开始查找字符串
str1.count('t')                         # 查找字符串出现的次数
#上面所有方法都可用index代替,不同的是使用index查找不到会抛异常,而find返回-1
str1.replace('old','new')               # 替换函数,替换old为new,参数中可以指定maxReplaceTimes,即替换指定次数的old为new
str1.strip(); str1.lstrip(); str1.rstrip(); str1.strip('d'); str1.lstrip('d'); str1.rstrip('d')
str1.startswith('start')                # 是否以start开头
str1.endswith('end')                    # 是否以end结尾
str1.isalnum(); str1.isalpha(); str1.isdigit(); str1.islower(); str1.isupper()      # 判断字符串是否全为字符、数字、大写、小写
分类: 学习编程

0 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注