目录
·缩进
·注释
·变量
·数据类型
·字符串
·字符串方法
·运算符
·四种集合类型
·For循环
·函数
·参数
·Lambad 函数
·类&对象
·继承
·作用域
·模块
·Try Except
Python 中的缩进非常重要。
Python 使用缩进来指示代码块。如果省略缩进,Python 会出错,空格数取决于程序员,但至少需要一个,而且必须在同一代码块中使用相同数量的空格,否则出错。
python中注释以 # 开头
或者可以在代码中添加多行字符串(三引号),并在其中添加注释:
""" This is a comment written in more than just one line """
Python 没有声明变量的命令,变量直接在为其赋值时创建的,甚至可以在设置后更改其类型
x = 5 y = "Hello, World!"
变量名只能包含字母数字字符和下划线,且区分大小写
Python 允许在一行中为多个变量赋值:
x, y, z = "Orange", "Banana", "Cherry"
复数用 "j" 作为虚部编写,无法将复数转换为其他数字类型
在python中可以使用 type() 函数获取任何对象的数据类型
x = 10 print(type(x))
字符串就是数组,Python 没有字符数据类型,单个字符就是长度为 1 的字符串。
方括号可用于访问字符串的元素:
a = "Hello, World!" print(a[1])
Python 有一组可用于字符串的内置方法:
1)strip() 方法删除开头和结尾的空白字符;
2)lower() 返回小写的字符串,upper() 方法返回大写的字符串;
3)replace() 用另一段字符串来替换字符串;
4)split() 方法在找到分隔符的实例时将字符串拆分为子字符串;
5)format()方法组合字符串和数字,接受传递的参数,格式化它们,并将它们放在占位符 {}
所在的字符串中
eg:
quantity = 3 itemno = 567 price = 49.95 myorder = "I want {} pieces of item {} for {} dollars." print(myorder.format(quantity, itemno, price))
身份运算符用于比较对象,不是比较它们是否相等,但如果它们实际上是同一个对象,则具有相同的内存位置
成员资格运算符用于测试序列是否在对象中出现
略
一种有序可更改的集合,允许重复的成员,用方括号编写,通过引用索引号来访问列表项,也可通过索引号来更改特定项目的值,具体实例方法如下:
thislist = ["apple", "banana", "cherry","orange", "kiwi", "melon"] #创建列表 print(thislist[1]) #打印列表第二项 print(thislist[-1]) #打印列表最后一项 print(thislist[2:5]) #打印第三、四、五项 thislist[1] = "mango" #更改第二项 for x in thislist: #循环遍历列表项 print(len(thislist)) #打印列表项目数 thislist.append("mango") #将项目添加到列表的末尾 thislist.insert(1, "mango") #在指定的索引处添加项目 thislist.remove("banana") #删除指定的项目 thislist.pop() #删除指定的索引(如果未指定索引,则删除最后一项) del thislist[0]/del thislist #删除指定索引或整个列表 thislist.clear() #清空列表 mylist = thislist.copy() /mylist = list(thislist) #复制列表 ------------------------ list1 = ["a", "b" , "c"] list2 = [1, 2, 3] list3 = list1 + list2 #合并两个列表 for x in list2: list1.append(x) #将 list2 中的所有项一个接一个地追加到 list1 中 list1.extend(list2) #将 list2 添加到 list1 的末尾
元组是有序且不可更改的集合,一旦创建就无法向其添加删除项目,用圆括号编写:
thistuple = ("apple", "banana", "cherry", "orange", "kiwi", "melon") #创建元组 print(thistuple[1]) #打印元组的第二项 for x in thistuple: #遍历项目 if "apple" in thistuple: #检查元组红是否存在apple print(len(thistuple)) #打印元组项目数量
【注】:如需创建仅包含一个项目的元组,必须在该项目后添加一个逗号,否则 Python 无法将变量识别为元组。
集合是无序和无索引的集合,无法通过引用索引来访问 set 中的项目,不过可以可以使用 for
循环遍历 set 项目,或 in
关键字查询集合中是否存在指定值,集合用花括号编写,一旦创建就无法更改,但可以添加或者删除项目:
thisset = {"apple", "banana", "cherry"} #创建集合 thisset = set(("apple", "banana", "cherry")) #使用 set() 构造函数来创建集合 for x in thisset: #遍历集合 thisset.add("orange") #添加项目 thisset.update(["orange", "mango", "grapes"]) #添加多个项目到集合中 thisset.remove("banana")/thisset.discard("banana") #删除项目 x = thisset.pop() #删除最后一项,返回值是被删除的项目 thisset.clear() #清空集合 del thisset #删除整个集合 ------------- set1 = {"a", "b" , "c"} set2 = {1, 2, 3} set3 = set1.union(set2) #返回一个新集合,其中包含两个集合中的所有项目 set1.update(set2) #将 set2 中的项目插入 set1
字典是一个无序、可变和有索引的集合,用花括号编写,拥有键和值:
thisdict = { "brand": "Porsche", "model": "911", "year": 1963 } #创建字典 x = thisdict["model"]/x = thisdict.get("model") #通过在括号内引用其键名来获得键的值 thisdict["year"] = 2019 #修改健值 for x in thisdict: #循环遍历字典,返回值是字典的键 print(thisdict[x])/for x in thisdict.values(): #逐个打印所有健值 for x, y in thisdict.items(): #使用 items() 函数遍历键和值 thisdict["color"] = "red" #使用新的索引键并赋值,将项目添加到字典 thisdict.pop("model") /del thisdict["model"] #删除具有指定键名的项 thisdict.popitem() #删除最后插入的项目 mydict = thisdict.copy() #复制字典 mydict = dict(thisdict) #使用 dict() 方法创建字典的副本
【注】:词典也可以包含许多词典,称为嵌套词典
for
循环用于迭代序列(即列表,元组,字典,集合或字符串)。
这与其他编程语言中的 for
关键字不太相似,而是更像其他面向对象编程语言中的迭代器方法。
循环一组代码指定的次数,可以使用 range()
函数,返回一个数字序列,默认情况下从 0 开始,默认递增 1,并以指定的数字结束
for x in range(10): #遍历值0-9 for x in range(3, 10): #遍历值3-9 for x in range(3, 50, 6): #遍历3-49 以6为递增的序列
函数是一种仅在调用时运行的代码块,可以将数据(称为参数)传递到函数中,也可以把数据作为结果返回。
使用 def
关键字定义函数,调用函数使用函数名称后跟括号:
def my_function(): #创建函数 print("Hello from a function") my_function() #调用函数
参数在函数名后的括号内指定,根据需要添加任意数量的参数,用逗号分隔即可;如果调用了不带参数的函数,则使用默认值:
def my_function(country = "China"): print("I am from " + country) my_function("Sweden") my_function("India") my_function() #使用默认值
lambda 函数是一种小的匿名函数,可接受任意数量的参数,但只能有一个表达式:
lambda arguments : expression
eg:
x = lambda a, b, c : a + b + c print(x(5, 6, 2))
当把 lambda 用作另一个函数内的匿名函数时,会展现 lambda 的强大能力:
def myfunc(n): return lambda a : a * n mydoubler = myfunc(2) print(mydoubler(11))
Python 中的几乎所有东西都是对象,拥有属性和方法;类(Class)类似对象构造函数,或者是用于创建对象的“蓝图”。
class MyClass: #使用名为 x 的属性,创建一个名为 MyClass 的类 x = 5 p1 = MyClass() #创建一个名为 p1 的对象,并打印 x 的值 print(p1.x)
在实际应用程序中,所有类都有一个名为 init() 的函数,每次使用类创建新对象时,都会自动调用 init() 函数,它始终在启动类时执行;使用 init() 函数将值赋给对象属性,或者在创建对象时需要执行的其他操作
self
参数是对类的当前实例的引用,用于访问属于该类的变量;可不必被命名为 self
,但它必须是类中任意函数的首个参数
对象也可以包含方法,对象中的方法是属于该对象的函数。
#创建名为 Person 的类,使用 __init__() 函数为 name 和 age 赋值 class Person: def __init__(mysillyobject, name, age): mysillyobject.name = name mysillyobject.age = age def myfunc(abc): #在 Person 类中创建方法 print("Hello my name is " + abc.name) p1 = Person("Bill", 63) p1.myfunc() #在 p1 对象上执行该对象的函数 del p1.age/del p1 #删除对象的属性和对象
继承一般是继承另一个类的所有方法和属性的类。一般有父类和子类
#创建一个Person类,其中包含 firstname 和 lastname 属性以及 printname 方法 class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) # 使用 Person 来创建对象,然后执行 printname 方法: x = Person("Bill", "Gates") x.printname() #创建一个 Student 类,继承 Person 类属性和方法,并使用student创建对象执行printname方法 class Student(Person): x = Student("Elon", "Musk") x.printname() #子类的 __init__()会覆盖对父的 __init__()的继承。如需保持父的 __init__() 的继承,添加对父的 __init__() 函数的调用,或者使用super() 函数,它会使子类继承父类的所有方法和属性 def __init__(self, fname, lname,year): Person.__init__(self, fname, lname)/super().__init__(fname, lname) self.graduationyear = year #添加属性和参数 #创建对象传递正确的值 x = Student("Elon", "Musk", 2019) #在该类中添加方法 def welcome(self): print("Welcome", self.firstname, self.lastname, self.graduationyear)
在函数内部创建的变量属于该函数的局部作用域,并且只能在该函数内部使用
在 Python 代码主体中创建的变量是全局变量,属于全局作用域。全局变量在任何范围中可用
【注】:如果在函数内部和外部操作同名变量,Python 会将它们视为两个单独的变量,一个在全局范围内可用(函数外部),而一个在局部范围内可用(函数内部
通常,在函数内部创建变量时,该变量就是局部变量,只能在该函数内部使用。
但若要在函数内部创建全局变量,便可以使用 global 关键字使变量成为全局变量;
另外,如果要在函数内部更改全局变量,也使用 global 关键字
x = "awesome" def myfunc(): global x x = "fantastic"
模块是包含一组函数的文件,在应用程序中被引用,创建模块需将所需代码保存在文件扩展名为 .py
的文件中,然后使用import来调用创建的模块
#导入模块时使用 as 关键字创建别名 import mymodule as mx a = mx.person1["age"] #访问模块中的元素 print(a) x = dir(mx) #内置函数dir可以列出模块中的所有函数名(或变量名) #导入时间模块 import datetime x = datetime.datetime(2019, 10, 1) #使用 datetime 模块的 datetime() 类创建日期对象 print(x.strftime("%B")) #strftime() 方法把日期对象格式化为可读字符串
try测试代码块以查找错误,except处理错误,finally`执行代码,无论 try 和 except 块的结果如何
try: print(x) except: print("Something went wrong") finally: print("The 'try except' is finished") x = -1 #使用 raise 关键词 抛出异常 if x < 0: raise Exception("Sorry, no numbers below zero")