Python的历史
1989年12月,Guido van Rossum为了打发圣诞节假期,开发了ABC脚本语言的后继
Python名称来自于他喜欢的一个情景剧Monty Python's Flying Cirus
Python是一种高级动态,完全面对象的语言、函数、模块、数字、字符串都是对象,并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性
Python程序设计哲学:优雅、明确、简单
代码强制缩进:视觉效果和功能的统一
Python的强制缩进规范完成了关键部分
我们还需要良好的编程规范
变量、函数、类命名
注释和文档
一些编程设计上的良好风格
第一个Python语句:超级计算器
打开IDLE
在Python Shell中输入语句
print("Hello World!")
立即看到运行结果!
可以计算2的100次方!
也可以直接输入算式,当计算器用
超级大的数都没问题
第一个Python程序:Hello World!
打开IDLE
File->New File
输入代码
print("Hello World!")
File->Save
Run->Run Module
Python语言的几个要件
数据对象和组织
>对现实世界实体和概念的抽象
>分为简单类型和容器类型
>简单类型用来表示值
整数int 、浮点数float、复数complex、逻辑值bool、字符串str
>容器类型用来组织这些值
列表list、元组tuple、集合set、字典dict
>数据类型之间几乎都可以转换
赋值和控制流
>对现实世界处理和过程的抽象
>分为运算语句和控制流语句
>运算语句用来实现处理与暂存
表达式计算、函数调用、赋值
>控制流语句用来 组织语句描述过程
顺序、条件分支、循环
>定义语句也用来组织语句,描述一个包含一系列处理过程的计算单元
函数定义、类定义
Python数据类型:整数int、浮点数float、复数、逻辑值、字符串
Python变量机制:引用数据对象
Python容器类型:列表和元组
>Python中有几种类型是一系列元素组成的序列,以整数作为索引
>字符串str就是一种同类元素的序列
>列表list和元组tuple则可以容纳不同类型的元素,构成序列
元组是不能再更新(不可变)序列
字符串也是不能再更新的序列
>列表则可以删除、添加、替换、重排序列中的元素
可变类型
容器类型:列表和元组
>创建列表:【】或者list()
>创建元组:()或者tuple()
>用索引【n】获取元素(列表可变)
>+:连接两个列表/元组
>*:复制n次,生成新列表/元组
>len():列表/元组中元素的个数
>in:某个元素是否存在
>【start:end:step】:切片
可变类型的变量引用情况
>由于变量的引用特性
>可变类型的变量操作需要注意
>多个变量通过赋值引用同一个可变类型对象时
>通过其中任何一个变量改变了可变类型对象
>其它变量也看到了改变
alist = [1,2,3,4]
blist = alist
blist[0] = 'abc'
clist = alist[ : ]
clist[0] = None
常用的连续序列生成器:range函数
>range(n)
从0到n-1的序列
>range(start,end)
从start到end-1
>range(start,end,step)
从start到end-1,步长间隔step
step可以是负数
>range函数返回range类型的对象,可以直接当做序列用,也可以转换为list或者tuple等容器类型
Python容器类型:集合set
>集合是不重复元素的无序组合
>用set()创建空集
>可用set()从其它序列转换生成集合
>集合的操作
in:判断元素是否属于集合
|,union():并集
&,intersection():差集
^:symmetric_difference():异或
<=,<,>=,>:子集、真子集、超集、真超集
Python容器类型:字典dict
>字典是通过键值key来索引元素value,而不是像列表是通过连续的整数来索引
>字典是可变类型、可以添加、删除、替换元素
>字典中的元素value没有顺序、可以是任意类型
>字典中的键值key可以是任何不可变类型(数值/字符串/元组)
建立大型数据结构
>嵌套列表
列表的元素是一些列表
alist[i][j]
>字典的元素可以是任意类型,甚至也可以是字典
bands = {'Marxes':['Moe','Curly']}
>字典的键值可以是任意不可变类型,例如用元组来作为坐标,索引元素
poi = {(100,100):'bus stop'}
输入和输出:input/print函数
>input(prompt)
显示提示信息prompt,用户输入的内容以字符串形式返回
>print(v1,v2,v3,...)
打印各变量的值输出
可以带参数end='\n',缺省为换行,表示 打印后以这个字符串结尾
带参数sep=' ',却省是空格,表示变量之间用什么字符串隔开
>格式化字符串
'%d %s '%(v1,v2)
运算语句:表达式、函数调用和赋值
〉 各种类型的数据对象,可以通过各种运算组织成复杂的表达式
〉 调用函数或者对象,也可以返回数据,所有可调用的事务称为 callable
调用函数或者对象,需要在其名称后加圆括号,如果有参数,写在圆括号里不加圆括号的函数或者对象名称仅是表示自己,不是调用
〉将表达式或者调用返回值传递给变量进行引用,称为赋值
赋值语句的小技巧
〉 级联赋值语句
x = y = z =1
〉 多个变量分解赋值
a, b = ['hello', 'world']
〉 变量交换
a, b = b,a
〉 自操作
i +=1
n *= 45
控制流语句:条件if 、while循环、f o r循环
函数function
〉 函数用来对具有明确功能的代码段命名,以便复用(ruse)
〉 定义函数:def语句;
def<函数名> (<参数表>):
<缩进的代码段>
return<函数返回值>
〉 调用函数<函数名>(<参数>)
注意括号!
无返回值:<函数名> (<参数表>)
返回值赋值:v =<函数名> (<参数表>)
定义函数的参数:固定参数/可变参数
〉 定义函数时,参数可以有两种;
〉 一种是在参数表中写明参数名key的参数,固定了顺序和数量
def func(key1, key2, key3…):
def func(key1, key2=value2…):
〉 一种是定义时还不知道会有多少参数传入的可变参数
def func(*args): #不带key的多个参数
def func(**kwargs): #key=val形式的多个参数
定义函数的参数:固定参数/可变参数
调用函数的参数:位置参数/关键字参数
变量作用域
• 全局变量
• 定义在函数外的拥有全局作用域
• 全局变量可以在整个程序范围内访问
• 全局变量想作用于函数内,需加 global
• 局部变量
• 定义在函数内部的变量拥有局部作用域
• 局部变量只能在其被声明的函数内部访问
• 调用函数时,所有在函数内声明的变量名称都将被加入到作用域
Python引用扩展模块:import
〉 import<模块> [as <别名>]
将模块中的函数等名称导入当前程序 “命名空间”namespace
引用方法:<模块>.<名称>
〉 dir(<名称>)函数
列出名称的属性
〉 help(<名称>)函数
显示参考手册
〉 from<模块> import<名称>
导入模块的部分名称
时间相关:calendar模块
〉 跟日历相关的若干函数和类,可以生成文本形式的日历
〉 calendar.calendar(<年>)
〉 calendar.month(<年>,<月>)返回多行字符串
〉 calendar.isleap(<年>)判别闰年
〉 calendar.prmonth(<年>,<月>)
〉 calendar.prcal(<年>)
时间相关:datetime模块
〉有4个主要的类
date处理年月日
time处理时分秒、毫秒
datetime处理日期加时间
timedelta处理时段(时间间隔)
〉 常用函数/方法
datetime.date.today()
datetime.datetime.now()
datetime.datetime.isoformat()
〉 两个时间相减就是timedelta2天前
时间相关:time模块
〉 time.time()浮点数表示的现在时间
从1970-1-1 0:0:0开始的秒数
〉 time.struct_time结构化时间类
time.localtime(<纪元时间>)->结构
time.gmtime(<纪元时间>)->结构
time.mktime(<结构化时间>)->纪元时间
〉 time.strftime(<格式>)表示格式化输出(结构化)时间
〉 time.strptime(<字串>,<格式>)按照格式识别字串,返回时间
基本模块简介:算术
〉 math:常用的算术函数、三角函数 、幂指数等等
〉 cmath:支持复数的math函数
〉 decimal:十进制定点数
〉 fractions:有理数,比例
〉 random:随机数
random.randint(a,b)
random.randrange(start,stop,step)
〉 statistics:一些统计函数
持久化:shelve
〉 将任何数据对象,保存到文件中去
〉 类似字典形式访问,可读可写
〉 shelve.open(<文件名>)
〉 f[key]=value
〉 value=f[key]
〉 del f[key]
〉 f.close()
文本文件读写:内置文件对象
〉 open(<文件名>, <模式>)
〉 f.close()
〉 f.readline():返回一行
〉 f.readlines():返回所有行,列表
〉 f.writelines(<字符串列表>):写入文本行
图形用户界面:easygui
〉 可以显示各种对话框、文本框、选择框与用户交互
easygui.egdemo()演示
网友评论