#!/usr/bin/python3
-- coding:utf-8 --
’ a test module ’
author = ‘Zhang San’
Python是一个动态的,解释性的语言
静态语句和动态语句:这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(// 表示注释):
int a = 123; // a是整数类型变量
a = “ABC”; // 错误:不能把字符串赋给整型变量
解释性:代码无法直接编译成电脑所能识别的语言,比如C语言直接编译成exe以后直接运行就可以了,因为exe是机器语言电脑可以识别,然而解释性的语言没法编译成机器人语言,所以需要运行的时候一行一行的翻译成机器语言,所以速度很慢,而且运行过程中,才能发现错误的存在。
优点:非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容
缺点:编译型语言(类似于C语言)发布时只需要将exe发布,不用发布源码,而python就需要发布源码
解释器:Cpython时下载python时就自带的编译器,是用C语言开发的,所有的源码都是用此解释器翻译成机器语言的
标识符:
第一个字符必须是字母表中字母或下划线 _ 。
标识符的其他的部分由字母、数字和下划线组成。
标识符对大小写敏感。
可变类型(值定义了可以改变):list,dict,set
不可类型(值定义了就无法改变),tuple,str(指定的内容是无法更改的)
无序的(每次显示的顺序都不一样):set(只是筛除相同值,并不内部排序),dict
有序的(每次显示顺序是一样的):list, tuple, str
类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;
类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;
第一部分:基础知识
零.预备知识
- 单行注释采用#,多行注释用 ‘’‘ 或者 “”“
- Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句,例如:
total = item_one +
item_two +
item_three
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(),例如:
total = [‘item_one’, ‘item_two’, ‘item_three’,
‘item_four’, ‘item_five’] - 如果字符串内部有很多换行,用\n写在一行里不好阅读,为了简化,Python允许用’’’…’’'的格式表示多行内容,可以自己试试:
print(’’‘line1
… line2
… line3’’’)
line1
line2
line3
-
len()获取长度
str()转化成字符串
type()返回类型 -
print(b, end=’,’) print函数时默认换行的,用end可以让函数值输出在同一行
-
计算运行时间 import time
-
string 常用函数format,index,find,join,replace
‘test is {0}, {1}’.format(10,11)
s = ‘Zhanghan’
s.index(‘h’)
s.find(‘h’)
s.replace(‘z’, ‘Z’)
str = “-”;
seq = (“a”, “b”, “c”); # 字符串序列
print str.join( seq );
a-b-c
一.数据类型(不需要定义 int float str)
- name.title()首字母大写。name.upper()全部大写。name.lower()全部小写。
- name.strip()能删除字符串空白。
- python中数字有四种类型:整数、布尔型、浮点数和复数。
int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
bool (布尔), 如 True。
float (浮点数), 如 1.23、3E-2
complex (复数), 如 1 + 2j、 1.1 + 2.2jpython只有4种数据类型,整数(int)
str(字符串):如‘zhanghan’ 字符串是不可变变量,所以没有sort,pop,remove等函数
二.列表 motorcycle = [‘honna’,‘yamaha’,‘suzuki’]
3. name[-1]访问列表最后一个元素,以此类推
4. motorcycle.append(‘ducati’)结尾添加元素
5. motorcycle.insert(0,‘ducati’)插入到索引0的位置
6. del motorcycle[0]删除索引0的元素
7. pop弹出,列表就像一个栈,用于删除列表
最后一个元素并利用他的值。
popped_motorcycle = motorcycle.pop()
print(popped_motorcycle) -> suzuki
popped_motorcycle = motorcycle.pop(0)
print(popped_motorcycle.title()) -> Honna
- motorcycle.remove(‘yamaha’)删除yamaha当你不知道他的索引值时这么做
- motorcycle.sort() 按字母顺序排列永久性改变 motorcycle.sort(reverse = True)
- 函数sorted(motorcycle)临时改变,不改变motorcycle的排序
- motorcycle().reverse()反转列表顺序(永久性)
- 函数len(motorcycle)用于获取列表长度
- result.count(value) 用于求出result列表中,value的值出现的次数。
三.数值列表 digitals = [1,2,3,4,5,6]
-
range()函数生成一系列数字
-
函数list()可以将range(1,10)转化为列表: list(range(1,6)) -> [1,2,3,4,5]
-
min(digitals) = 1, max(digitals) = 6, sum(digitals) = 21
-
列表解析:squares = [value2 for value in range(1,11)] value2为存储在列表中的表达式,取值于后面的循环
-
切片:访问部分列表 print(digitals[1:4]) = [2,3,4]
-
复制:digitals_new = digitals[:] 如果写成digitals_new = digitals是将两个列表关联到一起,会同时修改。
四.元组(用于创建不可修改的列表相当于const double[]) 与列表唯一不同是使用()创建而不是[]
- dimension = (200,50) dimension[0]=400 会编译报错
- dimension = (400,50) 整体修改赋值不会编译报错。
- 最后来看一个“可变的”tuple:
t = (‘a’, ‘b’, [‘A’, ‘B’])
t[2][0] = ‘X’
t[2][1] = ‘Y’