- python基础
- 一、python在编程语言中的定位
- 二、python语法
- 1.版本2与3区别
- 2.速过
- 3.数字
- 4.字符串
- 5.可变与不可变类型
python基础 一、python在编程语言中的定位
Python是强类型语言(不会隐式地转换变量的类型),动态类型语言(数据类型在运行期间检查)。
强类型语言、弱类型语音判断的根本:是是否会隐式进行语言类型转变。弱类型速度快,强类型安全严谨。
动态语言、静态语言的区分:数据类型是在运行期间检查(python)还是在编译期间检查(java)。
编译型语言、解释型语言区别:
编译型语言:需要将一段程序直接翻译成机器码或者中间码。
解释型语言:使用解释器将源码逐行解释成机器码并立即执行。
解释型语言的优点:跨平台容易,只需提供特定平台的解释器;缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
有序序列:可用索引;[列表]、“字符串”
无序序列:不可用索引;{集合}
可变:可直接修改值
不可变:不可直接修改
除法:
2:运算结果是整数,向下取整
3:返回浮点数
2支持字符串与数字可以比较大小,3不支持
字典键值对方法返回类型:``
2中, .keys()、 .values()、 .items()方法返回列表
3中,分别返回dict_keys、dict_values、dict_items类型
a.keys(), a.values(), a.items() (dict_keys([1, 2]), dict_values([1, 4]), dict_items([(1, 1), (2, 4)]))
range(), map(), filter(), zip()函数返回值:
Python 2,返回列表;3,返回迭代器对象
round()舍入函数:
2中,5舍入到离0较远的一边;3中,数字5近似到偶数
round(1.5) 2 round(2.5) 2
迭代器对象取下一个值:
2中,.next()方法;3中,.next()方法
2.速过
①字符串:
三引号用来输入包含多行文字的字符串
"""hello world""" 'hellonworld'
字符串的分割:
s.split()
[‘hello’, ‘world’]
②列表:
用中括号生成:
a = [1, 2.0, ‘hello’, 5 + 1.0]
a + a
[1, 2.0, ‘hello’, 6.0, 1, 2.0, ‘hello’, 6.0]
元组用小括号()生成
用构造方法list和tuple可以相互转换
tuple(a) list(a)
③集合
花括号或.set()生成:
a = {1, 2, 3, 4}
b = {2, 3, 4, 5}
交:a & b >> {2, 3, 4}
并:a | b >> {1, 2, 3, 4, 5}
差:a - b >> {1}
.issubset() 或者b <= a判断子集包含关系,返回布尔
.add()一次加一个;.update()一次加多个
frozenset()函数创建不可变集合,可 用作字典的键
s = frozenset([1, 2, 3, 'a', 1]) flight_distance[frozenset(['Austin', 'Los Angeles'])] = 1233
④字典
{key:value}或dict()生成字典:
d = {'dogs':5, 'cats':4} >>大括号赋值
d["dogs"] >> 中括号插入赋值修改
初始化字典
b = {'键名1': '值1', '键名2': '值2'}
b['键名i']=值i
键必须是不可变的类型(哈希值算法要求字典的键必须是一种不可变类型),列表、浮点不可作键;
.get()方法替代索引处理值不存在,值不存在时返回默认值None;也可传入默认值。值存在相当于一个索引函数。
a.get("three")
a.get("three", "undefined")
.update()方法更新键值对(有键变值,无键加最后)
字典1.update(字典2) person.update(person_modifications)
.keys(),values(),items()方法分别返回字典的键,值,键值对
⑤循环
for 数据类型 in 对象
for field in fields:
total += int(field)
⑥循环创建列表
就是创建列表与for循环的叠加
新建列表 = [ 数据的限定 for 变量 in 对象]
classList = [example[-1] for example in dataSet]作用为: 将dataSet中的数据按行依次放入example中,然后取得example中的example[-1]元素,放入列表classList中
⑦函数
定义函数:
def 函数名(参数1,参i):
return xx
⑧类>>对象
python类规定,函数第一个参数是实例对象本身,记self(与java中this同义)
实例变量:类的声明中,属性用变量来表示 的 变量称为实例变量,实例变量是一个用 self 修饰的变量。self使得类成员间能互相调用,无需从外部调用 数据(变量)和 方法(函数),实现数据的封装 。
class 后面加类名,类名通常大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的,通常,如果没有合适的 继承类,就使用 object 类,这是所有类最终都会继承的类。
创建类时,把该类必须要绑定的属性加到__init__(self) 方法里。
def __init__(self,name,score): self.name = name self.score = score
⑨文件操作
写文件:
f = open('data.txt', 'w')
f.write('1 2 3 4n')
f.close()
读文件:
f = open('data.txt')
data = []
for line in f:
data.append([int(field) for field in line.split()])
f.close()
删除文件:
import os
os.remove('data.txt')
3.数字
整除:
12 // 5
2
取余(%):
12 % 5
2
幂(**)运算
10 ** 2
100
复数:j表示虚部
a = 1 + 2j
复共轭:
a.conjugate() (1-2j)
绝对值:
abs(-12)
12
取整:
round(12.6)
13
4.字符串
.split(“,”) 以逗号分割
.join()方法连接
":".join(nums) '1:2:3:4:5'
.strip()方法去除空白字符:
" HELLO WORLD nt".strip() 'HELLO WORLD'
切片方式可以用于修改、删除(del)字符串和数组、列表、元组;
5.可变与不可变类型
列表是可变的,通过索引可直接修改
字符串是不可变的,通过索引修改会报错;
元组有序+不可变
s = "hello world"
s.replace('world', 'Mars')
改变某个字符串变量的值,只能重新赋值
s = s.replace('world', 'Mars')



