python学习记录3——所学总结
一、数值类型
1.数据类型
(1)文本类型:str
(2)数字类型:int、float、complex
·整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。
·长整型(long integers) - 无限大小的整数,整数最后是一个大写或小写的L。
·浮点型(floating point real values) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
·复数(complex numbers) - 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
complex(real [,imag ]) 创建一个复数
(3)映射类型:dict
(4)序列类型:list、tuple
(5)布尔类型:bool
(6)套装类型:set(集合)、frozenset(冻结集)
(7)二进制类型:bytes、bytearray(字节数组类型)
2.类型转换
对学习记录2中list()、tuple()、str()的扩展
函数 | 描述 |
---|---|
list(s ) | 将序列 s 转换为一个列表 |
tuple(s ) | 将序列 s 转换为一个元组 |
str(x ) | 将对象 x 转换为字符串 |
int(x [,base ]) | 将x转换为一个整数 |
long(x [,base ]) | 将x转换为一个长整数 |
chr(x ) | 将一个整数转换为一个字符 |
float(x ) | 将x转换到一个浮点数 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
ord(x ) | 将一个字符转换为它的整数值 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
unichr(x ) | 将一个整数转换为Unicode字符 |
二、Python模块
1.模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
把相关的代码分配到一个模块里能让代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
def print_func( par ):
print "Hello : ", par
return
2.import语句
用于引入模块
import module
import 后只能跟包名或函数名
在调用模块中的函数时,需用 模块名.函数名
3.from……import语句
from 语句让你从包/模块中导入一个指定的部分到当前命名空间中
from fib import fibonacci
若把一个模块的所有内容全都导入到当前的命名空间,则用
from……import*
4.命名空间和作用域
命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典。一个 Python 表达式可以访问局部命名空间和全局命名空间里的变量。如果一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量。
每个函数都有自己的命名空间。类的方法的作用域规则和通常函数的一样。
如果要给函数内的全局变量赋值,必须使用 global 语句
x = 300
def addx():
global x
x += 200
print(x)
addx()
print(x)
输出:300
500
5.常用内置模块
模块名 | 描述 |
---|---|
sys | 与python解释器及其环境操作相关的标准库 |
os | 提供了访问操作系统服务功能的标准库 |
random | 可用于生成伪随机数 |
pickle | 用于python特有类型与python数据类型之间的转换 |
json | 用于使用JSON序列化和反序列化对象 |
urllib | 用于读取来自网上(服务器)的数据标准库 |
re | 用于在字符串中执行正则表达式匹配和替换 |
math | 提供标准运算函数 |
decimal | 用于进行精准控制运算精度、有效位数和四舍五入操作的十进制运算 |
logging | 提供灵活的记录事件、错误、警告和调试信息等日志信息的功能 |
random模块:
random() - 用于生成0~1的随机浮点数
randint(start,end):用于生成指定范围内的整数,start为起始数字范围,end为结束数字范围
random.uniform(a,b):用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: b <= n <= a。如果 a <b, 则 a <= n <= b。
randrange([start],stop,[step]):按指定步长生成随机数,与range类似,若start未指定,默认人0开始,step可为正,也可以为负
choice(seq):从非空序列seq中随机选择一个元素,seq需要可为字符串、列表和元组
choices(population, weights=None, *, cum_weights=None, k=1):从population中进行k次随机选择,每次选取一个元素(可能会出现同一个元素被多次选中的情况)
weights:相对权重值,population中有几个元素就要有相对应的权重值,
cum_weights:累计权重值,如相对权重值为[1,2,3,5],则累计权重值为[1,3,6,11]
sample(population, k):从population选择k个元素并组成新的序列,常用于不重复的随机抽样
shuffle(x, random=None):常用于打乱列表中的元素,仅适用于可变序列。
三、日期与时间
1.time模块
获取当前时间
import time
localtime = time.localtime(time.time())
print("本地时间为 :", localtime)
输出本地时间为 : time.struct_time(tm_year=2016, tm_mon=4, tm_mday=7, tm_hour=10, tm_min=3, tm_sec=27, tm_wday=3, tm_yday=98, tm_isdst=0)
# tm_isdst -1, 0, 1, 是决定是否为夏令时的旗帜
获取格式化的时间
import time
localtime = time.asctime( time.localtime(time.time()) )
print "本地时间为 :", localtime
输出:本地时间为 : Thu Apr 7 10:05:21 2016
格式化日期 strftime()
import time
# 格式化成2016-03-20 11:45:39形式
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 格式化成Sat Mar 28 22:24:24 2016形式
print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())
# 将格式字符串转换为时间戳(时间间隔是以秒为单位的浮点小数。每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。)
a = "Sat Mar 28 22:24:24 2016"
print time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
输出:2016-04-07 10:25:09
Thu Apr 07 10:25:09 2016
1459175064.0
2.calendar模块
获取某月日历
import calendar
cal = calendar.month(2016, 1)
print "以下输出2016年1月份的日历:"
print cal
输出:
以下输出2016年1月份的日历:
January 2016
Mo Tu We Th Fr Sa Su
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
3.datetime模块
获取当前日期
import datetime
x = datetime.datetime.now()
print(x)
输出2021-08-28 15:48:33.438422
获取年份、星期
import datetime
x = datetime.datetime.now()
print(x.year)
print(x.strftime("%A"))
输出2021
Saturday
创建日期
import datetime
x = datetime.datetime(2021, 6, 8)
print(x)
输出2021-06-08 00:00:00 #时间默认为0
格式化
import datetime
x = datetime.datetime(2021, 6, 8)
print(x.strftime("%b"))
输出 Jun
4.python中时间日期格式化符号
符号 | 意义 |
---|---|
%Y | 四位数的年份表示(000-9999) |
%y | 两位数的年份表示(00-99) |
%m | 月份(01-12) |
%d | 月内中的一天(0-31) |
%H | 24小时制小时数(0-23) |
%I | 12小时制小时数(01-12) |
%M | 分钟数(00-59) |
%S | 秒(00-59) |
%a | 本地简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化的月份名称 |
%B | 本地完整的月份名称 |
%c | 本地相应的日期表示和时间表示 |
%C | 世纪 |
%j | 年内的一天(001-366) |
%p | 本地A.M.或P.M.的等价符 |
%U | 一年中的星期数(00-53)星期天为星期的开始 |
%w | 星期(0-6),星期天为星期的开始 |
%W | 一年中的星期数(00-53)星期一为星期的开始 |
%x | 本地相应的日期表示 |
%X | 本地相应的时间表示 |
%Z | 当前时区的名称 |
%% | %号本身 |
四、类与对象
1.类
程序进行数据封装的方式。用来描述具有相同的属性和方法的对象的集合
变量——属性
函数——方法
class person :
def __init__(self,name): #隶属于某class的函数第一函数为self,代表类的实例
self.name = name #__init__为初始化函数,第一个必调用
#表明name属于class
def print_name(self):
print(self.name) #额外的第一参数名称,一般为self
2.对象
以某个类为模板定义的数据结构实例,对象中属性、方法可被访问
class person :
def __init__(self,name):
self.name = name
def print_name(self):
print(self.name)
Person1 = person("James")
Person1.print_name()
类内部——self.调用属性、方法
类外部——对象名.调用
3.内置类属性 与 特殊方法
类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。
__dict__
:类的属性(包含一个字典,由类的数据属性组成)
__doc__
:类的文档字符串
__name__
:类名
__module__
:类定义所在的模块(类的全名是’__module__
.className’,如果类位于一个导入模块mymod中,那么className.__module__
等于 mymod)
__bases__
:类的所有父类构成元素(包含了一个由所有父类组成的元组)
__base__
:类的第一个父类
a.__class__
:输出对象a所属的类
__subclasses__
:输出其子类的列表
__mro__
:类的层次结构
类的私有方法
__private_method:两个下划线开头,声明该方法为私有方法,不能在类的外部调用。在类的内部调用 self.__private_methods
特殊方法:
__len__
:通过重写,让len()的参数可以是自定义类型
__add__
:通过重写,可使用自定义对象具有“+”的功能
__new__
:创建对象
__init__
:对创建的对象进行初始化
dir() 可查看属性与方法
4.面向对象的三大特征
·封装:提高程序的安全性
·继承:提高代码的复用性
·多态:提高程序的可扩展性和可维护性
5.类的继承
让一个类可具有另一个类的一些属性和方法。
通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类。
如果在继承元组()中列了一个以上的类,那么它就被称作"多重继承" 。
class car: #父类
def __init__(self,a):
self.a = a
class rac(car): #子类
def __init__(self,b):
self.b = b
def print_b(self):
print(self.b)
asd = rac(12)
asd.print_b()
输出12
6.方法重写
子类继承父类时可对父类方法修改
同一父类可能有多个子类有同名方法,功能不同
实现多态
class car:
def __init__(self,brand):
self.brand = brand
def print_x(self):
print(self.brand)
class audi(car):
def __init__(self,types):
self.brand = "Mac"
self.types = types
def print_x(self):
print(self.brand + self.types)
a = audi("macbook")
a.print_x()
输出Macmacbook
7.object类
object类是所有类的父类,所有类都有object类的属性和方法
object有一个__str__()
方法,返回一个对于对象的描述,对应于内置函数str()常用于print(),查看对象的信息,所以常会对__str__()
重写