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")