主要介绍python基础语法
- 条件判断
- 循环
- 函数
- 类
- 文件读写
- 异常
Python 数据类型如不熟请参考 Python 数据类型
1、条件判断
>>> if True:
print('True')
else:
print('False')
True
2、循环
>>> numbers = [4,2,8,6,7,10]
>>> for num in numbers:
if num ==8:
#continue 是终止此次循环,break是终止整个for循环
continue
if num % 2 == 0:
print('{} is 偶数'.format(num))
else:
break
else:
print('如果没有碰到for 循环中break 会再执行else')
4 is 偶数
2 is 偶数
6 is 偶数
#for循环构建推导式,推导式就是从一个数据序列构建另一个序列的方法
>>> numbers = [0,1,2,3,4,5,6,7,8,9]
#常规写法
>>> new_numbers = []
>>> for num in numbers:
new_numbers.append(num*10)
#列表推导式写法
>>> new_numbers = [num*10 for num in numbers]
>>> new_numbers
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
#字典推导式
>>> dict_numbers = {num:'A' for num in numbers}
>>> dict_numbers
{0: 'A', 1: 'A', 2: 'A', 3: 'A', 4: 'A', 5: 'A', 6: 'A', 7: 'A', 8: 'A', 9: 'A'}
#可通过推导式取出字典中值为100的key
>>> dic_1 = {'a':100,'b':100,'c':200}
>>> dic_1['a']
100
>>> dic_1.items()
dict_items([('a', 100), ('b', 100), ('c', 200)])
>>> [key for key,value in dic_1.items() if value ==100]
['a', 'b']
>>> i = 1
>>> while(i<5):
i +=1
print(i)
2
3
4
5
3、函数
函数的主要目的是避免重复代码,函数是组织好的,可重复使用的,能够完成特定功能的代码块,它是代码块的抽象。
>>> def get_keys(dic,value):
return [k for k,v in dic_1.items() if v ==100]
#位置参数不可以改变位置
>>> get_keys(dic_1,100)
['a', 'b']
>>> get_keys(value=100,dic=dic_1)
['a', 'b']
#参数收集
>>> def test(name,age,*args,**kwargs):
print(name,age,*args,**kwargs)
#前面参数是必须的,后面参数可传可不传,如写接口或提交表单时等等
>>> test('Jim',16)
Jim 16
>>> test('Jim',16,['Tom','18'],{'height':175,'weight':120})
Jim 16 ['Tom', '18'] {'height': 175, 'weight': 120}
#匿名函数
>>> sum = lambda arg1, arg2: arg1 + arg2
>>> sum(10,20)
30
#装饰器 一般在项目中避免修改原函数代码会用到,修改也方便
#比如将程序中以前保留1位小数改成保留2位小数
>>> def decorator(func):
def wrapper(*args,**kwargs):
return round(func(*args,**kwargs),2)
return wrapper
>>> import random
>>> def test():
return random.random()
>>> @decorator
def test_two():
return random.random()*10
>>> f = decorator(test) # 完全等价于装饰器@decorator
>>> f()
0.59
>>> test_two()
9.48
4、类
用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
#类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。self 代表的是类的实例,代表当前对象的地址
>>> class Person:
#类的实例化操作会自动调用 __init__() 方法
def __init__(self,name,age):
#加下划线的意思是代表这个属性是私有的,也可访问,但看不到,不加可以直接看到
self._name = name
self._age = age
def get_name(self):
return self._name
def rename(self,new_name):
self._name = new_name
>>> p = Person('Trump',67)
>>> p.get_name()
'Trump'
>>> p.rename('Munger')
>>> p.get_name()
'Munger'
#类的继承
>>> class Student(Person):
def set_score(self,score):
self._score = score
def get_score(self):
return self._score
#使用@property 装饰器运行时可以直接使用s.score访问
@property
def score(self):
return self._score
>>> s = Student('Leibs',47)
>>> s.set_score(100)
>>> s.get_score()
100
>>> s.score
100
#多重继承
>>> class Gamer:
def __init__(self,interest):
self._interest = interest
def set_interest(self,interest):
self._interest = interest
@property
def interest(self):
return self._interest
>>> class Student(Person, Gamer):
def __init__(self, name,age,interest):
Person.__init__(self, name,age)
Gamer.__init__(self, interest)
def set_score(self,score):
self._score = score
@property
def score(self):
return self._score
>>> s = Student('Simons',78,'王者荣耀')
>>> s.set_score(88)
>>> s.interest
'王者荣耀'
>>> s.score
88
5、导包
>>> import math
>>> math.sin(math.pi/2)
1.0
#导入所有的方法
>>> from math import *
>>> sin(pi/2)
1.0
导入单个方法
>>> from math import sin
6、文件读写
#windows 路径直接复制过来open会报错
>>> f = open('E:\Test\test.txt','r')
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
f = open('E:\Test\test.txt','r')
OSError: [Errno 22] Invalid argument: 'E:\\Test\test.txt'
#r是保持字符串原始值的意思,就是说不对其中的符号进行转义
#f = open('E:\\Test\\test.txt','r')
>>> f = open(r'E:\Test\test.txt','r')
>>> f.read()
'浜虹敓鑻︾煭\n鎴戠敤Python'
#中文乱码需要指定编码
>>> f = open(r'E:\Test\test.txt','r',encoding="utf-8")
>>> f.read()
'人生苦短\n我用Python'
#遍历文件
>>> for line in f:
print(line)
人生苦短
我用Python
#关闭文件
>>> f.close()
#由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,Python引入了with语句来自动帮我们调用close()方法
#写文件
>>> with open(r'E:\Test\test.txt','a+',encoding="utf-8") as f:
f.write('\nHello, Python!')
15
>>> with open(r'E:\Test\test.txt','r',encoding="utf-8") as f:
for line in f:
print(line)
人生苦短
我用Python
Hello, Python!
7、异常
>>> 1/0
Traceback (most recent call last):
File "<pyshell#70>", line 1, in <module>
1/0
ZeroDivisionError: division by zero
>>> try:
1/0
except:
pass
#Python pass是空语句,是为了保持程序结构的完整性。
#pass 不做任何事情,一般用做占位语句。
#如果知道异常类型可以指定异常,捕获到此异常如何处理等等
>>> try:
1/0
except ZeroDivisionError as e:
print(e)
division by zero
#但大部分时候我们可能不知道异常是啥时,但也不能让程序崩掉,可使用Exception 去捕获
>>> try:
1/0
except Exception as e:
print(e)
division by zero
#主动抛出异常
>>> raise NameError('主动抛出异常NameError')
Traceback (most recent call last):
File "<pyshell#88>", line 1, in <module>
raise NameError('主动抛出异常NameError')
NameError: 主动抛出异常NameError
#自定义异常
>>> class MyError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
>>> raise MyError('自定义异常')
Traceback (most recent call last):
File "<pyshell#91>", line 1, in <module>
raise MyError('自定义异常')
MyError: '自定义异常'