1、 Python 简介
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。其语法简单明了,结构紧凑,适用于从小型脚本到大型项目的开发。
2、 为什么要学 Python?
- 易读性: Python 代码的清晰度是其核心优势,大大提高代码的可维护性。
- 多用途: 无论是 Web 开发、数据分析、人工智能还是网络编程,Python 都能胜任。
- 强大的生态: 有数以万计的库和框架可供选择,提供所有主要的商业数据库的接口。
3、 Python 的基础语法
3.1 数据类型
Python有五个标准的数据类型:
(1)数字(Number)
整数(int): 10、-10
浮点数(float):13.14、-13.14
复数(complex):4+3j
布尔(bool):True、False
(2)字符串(String)
描述文本:"Hello, World!"
(3)列表(List)
有序的可变序列:["apple", "banana", "cherry"]
(4)元组(Tuple)
有序的不可变序列:("red", "green", "blue")
(5)字典(Dictionary)
无序Key-Value集合:{"name": "John", "age": 30}
3.2 数学运算
| 运算符 | 功能 | 示例 | 结果 |
|---|---|---|---|
+ | 加法 | 1+1 | 2 |
- | 减法 | 2-1 | 1 |
* | 乘法 | 2*4 | 8 |
/ | 除法 | 10/3 | 3.3333333333.... |
// | 整除 | 10//3 | 3 |
% | 求余 | 10%3 | 1 |
** | 次方 | 2**3 | 8 |
3.3 比较运算
| 运算符 | 功能 | 示例 | 结果 |
|---|---|---|---|
== | 等于 | 1==2 | False |
!= | 不等于 | 1!=2 | True |
> | 大于 | 1>1 | False |
>= | 大于等于 | 1>=1 | True |
< | 小于 | 1<1 | False |
<= | 小于等于 | 1<=1 | True |
3.4 条件运算
| 运算符 | 功能 | 示例 | 结果 |
|---|---|---|---|
and | 与:两边条件都为True时,结果也返回True | 1==2 and 2==2 | False |
or | 或:两边条件只要有一个是True,结果就返回True | 1==2 or 2==2 | True |
not | 取反 | not 1==2 | True |
4、 Python语句
4.1 if 条件语句
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
else:
执行语句3……
4.2 While 循环语句
count = 0
while (count < 3):
print 'The count is:', count
count = count + 1
print "Good bye!"
执行结果:
The count is: 0
The count is: 1
The count is: 2
Good bye!
4.3 for 循环语句
for letter in 'Python':
print("当前字母: %s" % letter)
fruits = ['banana', 'apple', 'mango']
for fruit in fruits:
print ('当前水果: %s'% fruit)
print ("Good bye!")
执行结果:
当前字母: P
当前字母: y
当前字母: t
当前字母: h
当前字母: o
当前字母: n
当前水果: banana
当前水果: apple
当前水果: mango
Good bye!
4.4 pass 语句
pass 是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。
5、日期和时间
import time # 引入time模块
ticks = time.time()
print "当前时间戳为:", ticks
执行结果:
当前时间戳为: 1459994552.51
5.1 时间元祖(struct_time元组)
| 序号 | 属性 | 字段 | 值 |
|---|---|---|---|
| 0 | tm_year | 4位数年 | 2008 |
| 1 | tm_mon | 月 | 1 到 12 |
| 2 | tm_mday | 日 | 1到31 |
| 3 | tm_hour | 小时 | 0到23 |
| 4 | tm_min | 分钟 | 0到59 |
| 5 | tm_sec | 秒 | 0到61 (60或61 是闰秒) |
| 6 | tm_wday | 一周的第几日 | 0到6 (0是周一) |
| 7 | tm_yday | 一年的第几日 | 1到366 (儒略历) |
| 8 | tm_isdst | 夏令时 | -1, 0, 1, -1是决定是否为夏令时的旗帜 |
5.2 获取当前时间
time.localtime()
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)
5.3 获取格式化的时间
time.asctime()
import time
localtime = time.asctime(time.localtime(time.time()))
print "本地时间为 :", localtime
执行结果:
本地时间为 : Thu Apr 7 10:05:21 2016
5.4 格式化日期
time.strftime()
time.mktime()
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())
# 将格式字符串转换为时间戳 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
6、函数
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 () 。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
# 定义函数
def printme( str ):
"打印任何传入的字符串"
print str
return
# 调用函数
printme("我要调用用户自定义函数!")
printme("再次调用同一函数")
7、模块
7.1 import 语句
模块定义好后,我们可以使用 import 语句来引入模块,语法如下:
import module1[, module2[,... moduleN]]
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
7.2 from…import 语句
Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:
from modname import name1[, name2[, ... nameN]]
例如,要导入模块 fib 的 fibonacci 函数,使用如下语句:
from fib import fibonacci
这个声明不会把整个 fib 模块导入到当前的命名空间中,它只会将 fib 里的 fibonacci 单个引入到执行这个声明的模块的全局符号表。
7.3 from…import* 语句
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
from modname import *
这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。
例如我们想一次性引入 math 模块中所有的东西,语句如下:
from math import *
8、 File 方法
8.1 open() 方法
Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
注意: 使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。
open(file, mode='r')
# 的语法格式为:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明:
- file: 必需,文件路径(相对或者绝对路径)。
- mode: 可选,文件打开模式
- buffering: 设置缓冲
- encoding: 一般使用utf8
- errors: 报错级别
- newline: 区分换行符
- closefd: 传入的file参数类型
- opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。
8.2 file 对象
| 序号 | 方法 | 描述 |
|---|---|---|
| 1 | file.close() | 关闭文件。关闭后文件不能再进行读写操作。 |
| 2 | file.flush() | 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。 |
| 3 | file.fileno() | 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。 |
| 4 | file.isatty() | 如果文件连接到一个终端设备返回 True,否则返回 False。 |
| 5 | file.next() | 返回文件下一行。 |
| 6 | file.read([size]) | 从文件读取指定的字节数,如果未给定或为负则读取所有。 |
| 7 | file.readline([size]) | 读取整行,包括 "\n" 字符。 |
| 8 | file.readlines([sizeint]) | 读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。 |
| 9 | file.seek(offset[, whence]) | 设置文件当前位置。 |
| 10 | file.tell() | 返回文件当前位置。 |
| 11 | file.truncate([size]) | 截取文件,截取的字节通过size指定,默认为当前文件位置 |
| 12 | file.write(str) | 将字符串写入文件,返回的是写入的字符长度。 |
| 13 | file.writelines(sequence) | 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。 |