Python基础知识点:类型和运算

一:类型和运算

–1.1 寻求帮助:

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

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

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

– 1.3 Python数据类型:哈希类型、不可哈希类型

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

– 1.4 数字常量

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(str, base)                               # 将字符串转化为整数,base为进制数
# 2.x中,有两种整数类型:一般整数(32位)和长整数(无穷精度)。可以用l或L结尾,迫使一般整数成为长整数
float(‘inf‘), float(‘-inf‘), float(‘nan‘)    # 无穷大, 无穷小, 非数

– 1.5 数字的表达式操作符

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], x(……)                        # 索引、分片、调用
int(3.14),  float(3)                         # 强制类型转换

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

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

– 1.7 repr和str显示格式的区别

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

– 1.8 数字相关的模块

# 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 接收字符串类型的参数

– 1.9 集合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‘}

– 1.10 集合frozenset,不可变对象

"""
set是可变对象,即不存在hash值,不能作为字典的键值。同样的还有list、tuple等
frozenset是不可变对象,即存在hash值,可作为字典的键值
frozenset对象没有add、remove等方法,但有union/intersection/difference等方法
"""
a = set([1, 2, 3])
b = set()
b.add(a)                     # error: set是不可哈希类型
b.add(frozenset(a))          # ok,将set变为frozenset,可哈希

– 1.11 布尔类型bool

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

– 1.12 动态类型简介

"""
变量名通过引用,指向对象。
Python中的“类型”属于对象,而不是变量,每个对象都包含有头部信息,比如"类型标示符" "引用计数器"等
"""
#共享引用及在原处修改:对于可变对象,要注意尽量不要共享引用!
#共享引用和相等测试:
    L = [1], M = [1], L is M            # 返回False
    L = M = [1, 2, 3], L is M           # 返回True,共享引用
#增强赋值和共享引用:普通+号会生成新的对象,而增强赋值+=会在原处修改
    L = M = [1, 2]
    L = L + [3, 4]                      # L = [1, 2, 3, 4], M = [1, 2]
    L += [3, 4]                         # L = [1, 2, 3, 4], M = [1, 2, 3, 4

– 1.13 常见字符串常量和表达式

S = ‘‘                                  # 空字符串
S = "spam’s"                            # 双引号和单引号相同
S = "s\np\ta\x00m"                      # 转义字符
S = """spam"""                          # 三重引号字符串,一般用于函数说明
S = r‘\temp‘                            # 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

– 1.24 字典解析

D = {k:8 for k in [‘s‘, ‘d‘]}                     # {‘d‘: 8, ‘s‘: 8}
D = {k:v for (k, v) in zip([‘name‘, ‘age‘], [‘tom‘, 12])}

– 1.25 字典的特殊方法__missing__:当查找找不到key时,会执行该方法

class Dict(dict):
    def __missing__(self, key):
        self[key] = []
        return self[key]
dct = Dict()
dct["foo"].append(1)    # 这有点类似于collections.defalutdict
dct["foo"]              # [1]

– 1.26 元组和列表的唯一区别在于元组是不可变对象,列表时可变对象

a = [1, 2, 3]           # a[1] = 0, OK
a = (1, 2, 3)           # a[1] = 0, Error
a = ([1, 2])            # a[0][1] = 0, OK
a = [(1, 2)]            # a[0][1] = 0, Error

– 1.27 元组的特殊语法: 逗号和圆括号

D = (12)                # 此时D为一个整数 即D = 12
D = (12, )              # 此时D为一个元组 即D = (12, )

– 1.28 文件基本操作

output = open(r‘C:\spam‘, ‘w‘)          # 打开输出文件,用于写
input = open(‘data‘, ‘r‘)               # 打开输入文件,用于读。打开的方式可以为‘w‘, ‘r‘, ‘a‘, ‘wb‘, ‘rb‘, ‘ab‘等
fp.read([size])                         # size为读取的长度,以byte为单位
fp.readline([size])                     # 读一行,如果定义了size,有可能返回的只是一行的一部分
fp.readlines([size])                    # 把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长。
fp.readable()                           # 是否可读
fp.write(str)                           # 把str写到文件中,write()并不会在str后加上一个换行符
fp.writelines(seq)                      # 把seq的内容全部写到文件中(多行一次性写入)
fp.writeable()                          # 是否可写
fp.close()                              # 关闭文件。
fp.flush()                              # 把缓冲区的内容写入硬盘
fp.fileno()                             # 返回一个长整型的”文件标签“
fp.isatty()                             # 文件是否是一个终端设备文件(unix系统中的)
fp.tell()                               # 返回文件操作标记的当前位置,以文件的开头为原点
fp.next()                               # 返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。
fp.seek(offset[,whence])                # 将文件打操作标记移到offset的位置。whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。
fp.seekable()                           # 是否可以seek
fp.truncate([size])                     # 把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。
for line in open(‘data‘):
    print(line)                         # 使用for语句,比较适用于打开比较大的文件
open(‘f.txt‘, encoding = ‘latin-1‘)     # Python3.x Unicode文本文件
open(‘f.bin‘, ‘rb‘)                     # Python3.x 二进制bytes文件
# 文件对象还有相应的属性:buffer closed encoding errors line_buffering name newlines等

– 1.29 其他

# Python中的真假值含义:1. 数字如果非零,则为真,0为假。 2. 其他对象如果非空,则为真
# 通常意义下的类型分类:1. 数字、序列、映射。 2. 可变类型和不可变类型

原文地址:https://www.cnblogs.com/pythonfm/p/9048086.html

时间: 2024-10-12 19:52:39

Python基础知识点:类型和运算的相关文章

怒学Python——第二篇——类型与运算

Python支持5种数据类型,包括数字(numbers).字符串(string).列表(list).元组(tuple)和字典(dictionary).作为一门动态类型语言,不用去声明一个标示符的类型,使用的时候是什么类型会自动判定. 对于定义好的变量,若不使用该变量,可以用del删除来释放占有的资源,如 var = 10 del var Python的数字(numbers):支持int.long.float和complex,比较简单不给出示例. Python的字符串(string):如前面所说的

Python 基础知识点总结

本篇基于Python 2.7.9 根据廖雪峰Python教程整理 URL:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 安装及IDE 上Python官网下载安装包. 配置环境变量:C:\Python27. cmd中输入 python 出现信息则为安装正确. IDE推荐集成在Eclipse上的pydev,eclipse插件安装路径:http://pydev.org/updates

python 基础知识点

Python介绍及发展史 Python 2 or 3 区别 安装和第一个Hello World程序 变量 用户交互 模块初识 .pyc文件是什么? 数据类型初识 数据运算 表达式if......else语句 表达式for循环 break and continue区别及用法 表达式while循环 入门知识拾遗 列表.元组操作 字符串操作 字典操作 文件操作 字符编码与转码 函数的基本语法及特性 参数与局部变量 返回值 嵌套函数 递归 匿名函数 函数式编程介绍 高阶函数 内置函数 迭代器&生成器 装

Python基础知识点整理1

变量 = 数据 ,Python将数据赋值给变量,通过变量间的运算实现数据处理. Python是一种弱类型语言,不需要声明变量,也不需要指定类型! 关于Python的变量: 对一个变量A赋值为1,那么变量类型为整数:再次赋值为2.1,则变量类型变为浮点型.变量的类型是由赋值给它的数据决定的,这种特殊的实现是由于Python特有的变量回收机制决定的. Python变量回收机制: 对一个变量赋值,变量指向赋值的那个数所在的内存地址:当赋值改变时,变量的地址发生变化,在一段时间内,原来的数据没有变量引用

python 基础知识点整理 和详细应用

Python教程 Python是一种简单易学,功能强大的编程语言.它包含了高效的高级数据结构和简单而有效的方法,面向对象编程.Python优雅的语法,动态类型,以及它天然的解释能力,使其成为理想的语言,脚本和应用程序高速开发在大多数平台上的很多领域. Python解释器及其扩展标准库的源代码和编译版本号能够从Python的Web网站,http://www.python.org/全部主要平台可自由查看,而且能够自由公布.该网站上也包括了分配和指针到非常多免费的第三方Python模块,程序,工具,以

python 基础知识点整理 和具体应用

Python教程 Python是一种简单易学,功能强大的编程语言.它包括了高效的高级数据结构和简单而有效的方法,面向对象编程.Python优雅的语法,动态类型,以及它天然的解释能力,使其成为理想的语言,脚本和应用程序快速开发在大多数平台上的许多领域. Python解释器及其扩展标准库的源码和编译版本可以从Python的Web站点,http://www.python.org/所有主要平台可自由查看,并且可以自由发布.该站点上也包含了分配和指针到很多免费的第三方Python模块,程序,工具,以及附加

python基础知识点

python论坛: 1. python 脚本格式 前2行格式如下,第一行是表示用python执行,第二行是通用字符集,任何语言都能正常显示. 1)#!/usr/bin/env python 2)#_*_coding:utf-8_*_ (貌似写成#coding=utf-8也行) 其实上面的语句怎么写都行,只要符合coding[ := ]\s*([-\w.]+); 意思就是coding后面要紧紧的跟着冒号或者等号,之后可随意多少个空格,然后接utf-8,coding=utf-8前后随意加字符都行.

菜鸟学python之对象类型及运算

Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型. 等号(=)用来给变量赋值. 1 变量赋值 1.1 单个变量赋值 >>> name="python" >>> print(name) python 1.2 多个变量赋值 >>> name=names="python&

Python基础—知识点拾遗

一.字符串格式化进阶 Python的字符串格式化有两种方式: 百分号方式.format方式,由于百分号的方式相对来说比较老,在社区里讨论format方式有望取代百分号方式,下面我们分别介绍一下这两种方式: 1.百分号方式 用法:%[(name)][flags][width].[precision]typecode (name):可选,用于选择指定的key flags:可选,可提供选择的值有 1 2 3 4  +          #右对齐;正数前加正号,负数前加负号  -          #左