0.开始前了解
#号是一行注释
"""
6个 " 是多行注释
"""
#-- coding: UTF-8
print(u"你好!") #中文加上u转为unicode显示,不然会显示乱码
1. 基础语法和概念
#(1) 基本数据结构(整型、浮点型、字符串、布尔型)
#格式:name = value 没有分号、编译器自动匹配类型
int_num = 10
float_num = 3.14
string_num = "Hello world!"
bool_num = True #or Flase
print('int_num:{}'.format(int_num) + ', float_num:{}'.format(float_num)
+ ', string_num:'+string_num + ', bool_num:{}'.format(bool_num))
#输出:int_num:10, float_num:3.14, string_num:Hello world!, bool_num:True
#format方法是格式化输出,也就是在{}的地方替换为变量的值, 也可直接print(bool_num)
#(2) 变量与赋值(同上)
#(3) 输入与输出(print函数和input函数)
input_value = input("please input what you want:")
print('you input value is:{}'.format(input_value))
#输入字符串时得加"", 整型直接是数字
2. 控制条件
#(1) 条件语句(if, elif, else)
x = 10
if x > 5 : #注意调节语句带冒号:
print("x > 5") #输出x > 5
print("if multi line") #注意4个英文空格缩进,同缩进代表同执行功能范围内
elif x == 5:
print("x == 5")
else :
print("x < 5")
#(2) 循环结构(while循环,for循环)
i = 0
print(u"while 语句:")
while i < 3 :
print(i) #分别输出0 1 2
i += 1
i = 5
print(u"for 语句:")
for i in range(3) :
print(i) #分别输出0 1 2
#(3) 循环控制语句(break, continue)
for y in range(10) :
if y == 5 :
break #注意空格缩进,缩进方式代表其在哪个功能范围内
else :
continue
print(y) #输出5
#(4) 简单列表推导式
numbers = [1, 2, 3, 4, 5]
list_A = [x**2 for x in numbers] # 两个*是平方,单个是乘
print("list_A:{}".format(list_A)) #输出list_A:[1, 4, 9, 16, 25]
list_B = [x*2 for x in numbers if x > 3]
print("list_B:{}".format(list_B)) #输出list_B:[8, 10]
list_C = [a + b for a in list_A for b in list_B]
print("list_C:{}".format(list_C)) #输出list_C:[9, 11, 12, 14, 17, 19, 24, 26, 33, 35]
3. 数据结构
#列表 list
numbers = [1, 2, 3, 4, 5, 'mayun']
print(numbers[3]) #输出4
numbers.append(6)
print("{}".format(numbers)) #输出[1, 2, 3, 4, 5, 'mayun', 6]
#元组 tuple
#person = ["DYM", 18, "china"]
person = "DYM", 18, "china" #两者实现方式一样
print(person[2] + ", {}".format(person)) #输出china, ('DYM', 18, 'china')
#字典 dictionary
student = {"name": "YMD", "age": 25, "country": "china"}
print(student["name"]) #输出YMD
student["age"] = 27
print(student) #输出{'country': 'china', 'age': 27, 'name': 'YMD'}
#集合 Set
numbers = {1, 2, 3, 4, 5}
numbers.add(6)
print(numbers) #输出set([1, 2, 3, 4, 5, 6])
4. 函数与模块
#(1) 函数定义与调用
def greet(name) :
print("Hello, " + name)
greet("DYM") #输出Hello, DYM
#(2) 函数传递与返回值
def add(x1, y2) :
return x1 + y2
result = add(3, 5)
print(result) #输出8
#(3) 局部变量与全局变量
x = 10
def func() :
#x = 5 #这x是局部变量
global x #使用global关键字声明x是全局变量,才能对全局变量x进行读写
x = 3
print(x) #输出3
func()
print(x) #输出3
#(4) 匿名函数(lambda表达式)
add2 = lambda x, y : x + y
print(add2(4, 9)) #输出13
#(5) 模块的使用(import语句)
#导入官方库或者私有的
import math
print(math.sqrt(16)) #输出4.0
import FunctionMoudle #这是私有的,在自己写的FunctionMoudle.py中
FunctionMoudle.printMySelf()
#(6) 常用标准库模块
#math,数学运算函数和常量,如平方根math.sqrt、math.sin正弦值
print(math.sin(math.pi/2)) #输出1.0
#datetime, 日期和时间的函数和类
import datetime
print(datetime.datetime.now()) #输出当前时间:年、月、日、时、分、秒、毫秒
delta = datetime.timedelta(days=1) #计算时间差
print(datetime.datetime.now() + delta) #输出当前时间+1天
5. 面向对象编程
#(1)类和对象的概念
#类是一种抽象的数据类型,用于描述具有相同属性和方法的对象的集合。
#对象是类的实例化。
#(2)类的定义与对象的创建:
class Person :
def __init__(self, name, age) : #__init__类是特殊方法,参数默认只有self
self.name = name
self.age = age
person1 = Person("Alice", 25)
person2 = Person("Bob", 30)
print(person1.name) #输出Alice
person1.name = "Alice sister"
print(person1.name) #输出Alice sister
#(3)实例属性与方法
#实例属性是属于对象的变量,实例方法是属于对象的函数
class Person :
def __init__(self, name, age) :
self.name = name
self.age = age
def say_hello(self) :
print("Hello, my name is "+self.name)
person3 = Person("Alice", 25)
print(person3.name) #输出Alice
person3.say_hello() #输出Hello, my name is Alice
#(4)类属性与类方法
#类属性是属于类的变量,类方法是属于类的函数
class Person :
counter = 0
def __init__(self, name):
self.name = name
Person.counter += 1
@classmethod
def get_count(cls) :
return cls.counter
person1 = Person("Alice")
person2 = Person("Bob")
print(Person.get_count()) #输出2
#(5)集成与多态
#继承是一种创建新类的方式,新类继承了现有类的属性和方法。
#多态是指同一种方法在不同的类中有不同的实现
class Animal :
def sound(self) :
pass #null,空操作,在执行时什么反应都没有,这里表示暂未实现
class Dog(Animal) :
def sound(self): #继承Animal并重实现sound
print("wang wang wang")
class Cat(Animal) :
def sound(self): #继承Animal并重实现sound
print("meow meow")
dog = Dog()
cat = Cat()
dog.sound() #输出wang wang wang
cat.sound() #输出meow meow
#(6)特殊方法
#特殊方法是以双下划线开头和结尾的方法,用于实现类的特殊行为
#如__init__方法用于初始化对象
#如__str__打印实例时会调用其
class Person :
def init(self, name):
self.name = name
def __str__(self) :
return "I am " + self.name
person = Person("DYM")
print(person) #输出DYM
6. 异常处理
#(1)异常的概念
#异常是在程序执行过程中发生的错误或异常情况
"""
语法:
try - except
try - except - else
try - except - else - finally
异常类型:
BaseException 所有异常的基类
SystemExit 解释器请求退出
KeyboardInterrupt 用户中断执行(通常是输入^C)
Exception 常规错误的基类
StopIteration 迭代器没有更多的值
GeneratorExit 生成器(generator)发生异常来通知退出
StandardError 所有的内建标准异常的基类
ArithmeticError 所有数值计算错误的基类。
Floating PointError 浮点计算错误
OverflowError 数值运算超出最大限制。
ZeroDivisionError 除(或取模)零(所有数据类型)
AssertionError 断言语句失败
AttributeError 对象没有这个属性
EOFError 没有内建输入, 到达EOF标记
"""
#(2)try-except语句
#使用try-except语句来处理不同类型的异常
"""
基础用法:
try :
执行的代码
except :
执行应对异常发生的代码
"""
a = 10
b = 0
try :
num = a / b
except Exception :
print("Error") #输出 Error
#(3)处理多种异常
"""
基础用法:
try :
执行的代码
except :
执行应对异常发生的代码
except :
执行应对异常发生的代码
else :
try未发生异常后, 执行的语句
"""
a = 10
b = 0
try :
num = a / b
except ValueError:
print("Error, Invalid value")
except ZeroDivisionError:
print("Error, Division by zero") #输出Error, Division by zero
a = 10
b = 0
try :
num = b / a
except ValueError:
print("Error, Invalid value")
except ZeroDivisionError:
print("Error, Division by zero")
else :
print("try no error") #输出try no error
#(4)finally语句
"""
基础用法:
try :
执行的代码
except :
执行应对异常发生的代码
else :
try未发生异常后, 执行的语句
finally :
无论异常有无发生, finally最终都会执行
"""
try :
num = a / b
except ValueError:
print("Error, Invalid value")
except ZeroDivisionError:
print("Error, Division by zero") #输出Error, Division by zero
else :
print("try no error")
finally:
print("try except else finally end") #输出try except else finally end
#(5)自定义异常
#可以通过继承Exception类来创建自定义异常
class MyException(Exception) :
pass
try :
raise MyException("this is a custom exception") #raise引发一个异常
except MyException as e :
print("Error, "+str(e)) #输出Error, this is a custom exception
7. 文件与输入输出
#(1)文件的打开与关闭
#可以使用open()函数打开文件,并使用close()方法关闭文件
file = open("FunctionMoudle.py", "r")
file.close()
#(2)读取与写入文件 read()和wirte()
file = open("file.txt", "w+")
file.write("Hello ")
file.write("world!")
file.close()
file = open("file.txt", "r")
content = file.read()
print(content) #输出Hello world!
file.close()
#(3)文件上下文管理器
#使用with语句来自动管理文件的打开和关闭
with open("e:/09_mine/10_BigData/file.txt", "r") as file :
content = file.read()
print(content)#输出Hello world!
#(4)文件的其它操作
#文件拷贝
import shutil
try :
shutil.copy("file.txt", "file1.txt")
except BaseException :
print("file copy error")
import os
try :
os.remove("file1_new.txt")
except BaseException :
pass
os.rename("file1.txt", "file1_new.txt")