python学习

python基本语法

写在最前面

本文主要参考了https://www.w3school.com.cn/python/index.asp的python教程,小白学习python的初步笔记,之后如果再有想法,也会修改添加。

缩进写法

Python使用缩进指示代码块(缩进即代码行开头的空格)
空格数任意,至少一个(否则报错)
统一代码块使用相同数量空格

注释写法

注释为“#”开头
Python多行注释的写法:

  1. 通过每行插入“#”实现
  2. 利用python忽略未分配变量字符串,添加多行字符串(三单引号或三双引号)

函数和方法的区别

  1. 函数的调用是直接写,函数名(函数参数1,函数参数2,…)
  2. 方法是通过 对象.方法 调用的

变量写法

创建变量

  1. python没有声明变量命令,变量通过赋值创建
  2. 变量不需要使用特定类型声明,还可以在设置后改变类型
  3. 字符串变量用单引号或双引号表示
  4. 变量名必须以字母或下划线开头,只能包含字母数字和下划线
    ​变量名区分大小写
  5. 可以一行为多个变量赋不同值,也可以一行多多个变量赋相同值
  6. 特定类型的变量,如复数,可采用如x = complex(1j),查表得不同构造函数

变量输出

注意:print函数自带换行

输出时+的用法:
  1. 组合文本和变量
    x = "ping"
    print("what's your " + x)
    
  2. 组合两个字符串变量
  3. 组合两个数字相加(作数学运算符)
  4. 不能组合字符串与数字
组合字符串和数字format()

format()接收传递的参数,格式化并将它们放在占位符{}所在的字符串中
可以在{}加索引号保证占位符正确,否则为依次填入

quantity = 1
pokemon = 094
price = 470
myorder = "I want to pay {2} Pokémon Dollar for {0} pokemon {1}."
print(myorder.format(quantity, itemno, price))

变量类型

数字类型
  1. int,整数。正数或负数,没有小数,长度不限
  2. float,浮点数。包含小数的正数或负数
    也可以是带“e”的科学数字,表示10的幂,如x = 3.0e8
  3. complex,复数。用j作为虚部,如x = 2 + 3j
  4. 可以进行类型转换(无法将复数转换为其他类型)
    • int(浮点数)为下舍入(用math模块采取别的取整)
    • int(字符串)取字符串字面量
字符串类型
字符串创建及裁切
  1. 在Python中使用单引号或双引号是没有区别的,都可以用来表示字符串
    字符串可赋值给变量
  2. 方括号可用于访问字符串的元素,第一个字符的位置为0
  3. 裁切返回字符类似matlab,如[2:5],返回位置2到位置5的字符(不包括位置5)
  4. 负索引表示从末尾开始计数,如[-5:-2],获取位置5到位置2的字符(不包括位置2)
字符串函数与方法
  • len()函数返回字符串长度
  • replace()方法用另一段字符串来替换的replace()
  • split()方法根据指定分隔符拆分字符串

字符串方法返回新值,但不会改变原始字符串
更多方法可查表获得

布尔型

如果有某种内容,则几乎所有值都将评估为 True
除空字符串外,任何字符串均为 True
除 0 外,任何数字均为 True
除空列表外,任何列表、元组、集合和字典均为 True
内置函数,如检查对象是否为整数,返回布尔型

运算符写法

算术运算符

运算符名称
+
-
*
/
%取模
**
//地板除(取整除)

赋值运算符

类似c++里的赋值语句,=,+=,-=,*=之类

比较运算符

类似matlab,==等于,>=大于或等于

逻辑运算符

and,or
not,反转结果,如果结果为true,则返回false

身份运算符

is如果两个变量是同一个对象,则返回true
不是比较对象值是否相等,而是依据同一个对象具有相同的内存位置

成员运算符

In对象中存在具有指定值,则返回true

txt = "what's your ping"
x = "ing" in txt
print(x)

如可用于检查字符串是否存在特定短语或字符

位运算符

用于比较(二进制)数字

符号逻辑含义具体内容
&AND两个位均为1,则将每个位设为1
|OR两个位中有一位为1,则将每个位设为1
^XOR两个位只有一位为1,则将每个位设为1
~NOT反转所有位
<<通过右侧推入零来左移,推掉最左边的位
>>通过左侧推入最左边的位的副本来右移,推掉最右边的位

集合(数组)

列表,List是一种有序和可更改的集合。允许重复的成员。
元组,Tuple是一种有序且不可更改的集合。允许重复的成员。
集合,Set是一个无序和无索引的集合。没有重复的成员。
词典,Dictionary是一个无序,可变和有索引的集合。没有重复的成员。

可以用英文名字构造函数直接创建集合,如词典为dict()

列表 list(有序,可更改,允许重复)

创建列表
  1. 列表用方括号[]编写,如pokemon = ["Gengar","Leafeon"]
  2. 可以通过方括号内的索引号访问列表项
  3. 索引序号与字符串相同
    负的索引表示从末尾开始,-1表示最后一个项目
    指定索引范围用:连接,注意只包括范围左边对应的项,不包括右边,返回的是带指定项目的新列表
  4. 更改特定项目的值,引用索引号
  5. 确定列表长度多少项,用len()函数
  6. 也可以使用list()构造函数创建列表
    pokemon = list(("Gengar","Leafeon"))	#注意双括号
    
修改列表
添加项目

append()方法将项目添加到列表末尾
insert()在指定索引处添加项目

删除项目
  • remove()方法删除指定的项目 ,()中为删除的内容
  • pop()方法删除指定的索引,若未指定则删除最后一项
  • del关键字删除指定索引 del text[0],删除完整列表 del text
  • clear()方法清空列表
复制列表
  1. 使用=复制
    如使用list2 = list1来复制表,则list2视作对list1的引用,list1的更改也将自动在list2中进行
  2. copy()方法
  3. 内建list()复制
pokemon1 = ["Gengar","Leafeon"]
pokemon2 = list(pokemon1)
合并列表
  1. 合并两个列表,使用+运算符
  2. 添加所有元素从一个表到令一个表,如遍历所有元素append()方法
  3. extend()方法将一个列表中的元素添加到另一列表的末尾
其他列表常用方法

排序sort()
颠倒顺序reverse()
查表得更多(待更新ing)

元组 tuple(有序,不可更改,允许重复)

创建元组
  1. 用圆括号编写
  2. 用方括号内的索引号来访问
  3. 负索引用法相同
  4. 指定索引范围,返回的是带指定项目的新元组
  5. 创建只包含一个项目的元组时,要在该项目后加一个,
    否则会识别为字符串变量
修改元组
  1. 元组创建后即不可变
    可以通过把元组转换为列表,更改列表,再把列表换回元组的方法修改
  2. 元组项目无法删除,可以del关键字删除整个元组

集合 set(无序,无索引,无重复)

创建集合
  1. 集合用花括号编写
  2. 集合是无序的,无法确定项目的显示顺序
访问集合

访问时因为set是无序的,可以用for遍历set项目,或用in关键字查询

修改集合

集合创建后无法更改项目,但是可以添加和删除项目

  1. 添加项目
    • 向集合添加一个项,用add()
    • 向集合添加多个项,用update() ,如
      pokemon.update(["Gengar","Leafeon"])#也可以不用中括号,用其他形式括号
      
  2. 删除项目
    1. 删除指定项目可以用remove()discard()
      删除项目不存在时,将引发错误
    2. 用pop()删除项目将删除最后一项
      对于无序的集合来说,不知道删除哪一项
  3. clear()清空集合
  4. del彻底删除集合
合并集合
  1. union()返回一个新集合,包含两个集合中的所有项目
    pokemon3 = pokemon1.union(pokemon2)#集合3包含了1和2
    
  2. update()将一个集合的所有内容插入到另一个集合
    pokemon2.updata(pokemon1) #将pokemon1的内容插入pokemon2中
    

以上两种方法都将排除重复项,如有对差异处理的需求可以采取其他方法

字典 dict(无序,可更改,有索引,无重复)

创建字典
  1. 用花括号编写,拥有键和值
    thisPM =	{
    "Gengar" : "94",
    "Leafeon" : "470"
    }
    
  2. 可以通过方括号内引用键名或get()方法来获取键的值
  3. 可以通过引用键名的方式更改特定项目的值
  4. 使用dict()构造函数创建字典(注意赋值使用等号而不是冒号)
    thisPM = dict(Gengar = "94", Leafeon = "470")
    
遍历字典
  1. 直接for循环遍历,返回的是字典的键值
  2. 可以使用方括号引用遍历得的键或values()方法返回值
  3. 通过items()方法遍历键和值#
修改字典
  1. 使用新的索引键并为其赋值,可以将项目添加到字典中
  2. 删除项目
    • pop()方法删除具有指定键名的项目
    • popitem()方法删除最后插入的项目
    • del关键字,指定键名来删除对应项目del text["cchh"]
    • del关键字或clear() 方法完全删除字典
复制字典
  1. dict2 = dict1只是dict2对dict1的引用,dict1中的更改会在dict2中进行
  2. copy()方法复制myPM= thisPM.copy()
  3. dict()创建字典副本myPM = dict(thisPM)
嵌套字典

两种实现方式:

  1. 创建一个字典时包含创建许多字典
  2. 创建多个字典,再创建一个字典包含这些字典

循环判断语句

If Else语句

常用逻辑条件与其他语言类似

格式
  • 条件语句后面接冒号

  • python依赖缩进,其他语言通过花括号实现的方式在这里要用空格来定义代码范围

      if b > a:
      	print("b is greater than a")
    

elif相当于else if
if语句不能为空,无内容要用pass

while语句

同样,条件语句需要接冒号while i < 7:
continue终止循环的当前迭代,并继续下一个

for语句

特点
  • for循环用于迭代序列(即列表,元组,字典,集合或字符串)
  • 不需要预先设置索引变量
  • 按顺序遍历列表
  • 不能为空,无内容要用pass
常用搭配
  • range()函数返回一个数字序列,默认从0开始,递增1

  • range(start,end,scan), scan为跳跃间隔,序列不包括end处值

else特殊用法
  • for循环中else指定循环结束时要执行的代码

函数

定义函数

def关键字定义函数

def yinzi():
  print("what's your ping")

需要函数返回值,用return加对应内容

调用函数

调用函数为:函数名称后跟括号yinzi()

设置参数

  1. 定义时在函数名后的括号内指定参数,用逗号分隔
  2. 定义参数的时候也可以设置默认值
  3. 发送到函数的参数可以是任何数据类型,并且在函数内其被视为相同数据类型
关键字参数
  • 使用key = value语法(关键字和值对应)时,参数顺序无关紧要
任意参数
  • 不知道传递多少参数时,在函数定义的参数名前加*
  • 函数可以接受一个参数元组,并相应地访问各项

lambda函数

是一种小的匿名函数,可接受任意数量的参数,但只能有一个表达式

基本语法
  • lambda arguments:expression
常用场合
  1. 作为另一个函数内的匿名函数
  • x = lambda a, b : a * b
    print(x(5, 6)) 
    
  1. 作为函数内的匿名函数

    def myfunc(n):
    return lambda a : a * n
    mydoubler = myfunc(2)
    mytripler = myfunc(3)
    
    print(mydoubler(11)) 
    print(mytripler(11))
    

数组

没有内置对数组的支持,用python列表代替(基本处理方法相同)
数组用于在单个名称下保存多个值,可以用索引号来访问这些值

类和对象

创建类

类是抽象的模板,实例是根据类创建出来的具体对象

  1. class关键字创建类
  2. _init_()函数
    • 所有类都有
    • 用于将值赋给对象属性
    • 用类创建新对象时都会自动调用
  3. self参数
    • 是对类的当前实例的引用,用于访问属于该类的变量
    • 不必被命名为self,但必须是类中任意函数的首个参数
    class Person:
     def __init__(self, name, age):
       self.name = name
       self.age = age
       
     def myfunc(self):
       print("Hello my name is " + self.name)
    
    p1 = Person("Bill", 63)
    print(p1.name)
    p1.myfunc()
    

继承

  1. 创建父类
    任何类都可以是父类,因此创建语法相同
  2. 创建子类
    在创建子类时将父类作为参数发送
    • 如创建名为Student的子类,将从父类Person继承属性和方法
      class Student(Person):
      	pass
      
      pass不会添加任何其他属性或方法
  3. 添加_init_()函数
    • 为子类添加_init_()后,子类的_init_()将覆盖对父类_init_()的继承
    • 如需保持对父类的_init_()的继承,添加对父类的_init_()的调用
      如Person为父类时
      class Student(Person):
        def __init__(self, fname, lname):
          Person.__init__(self, fname, lname)
      
    • 函数定义中使用super()函数自动继承,不必使用父元素的名称
      class Student(Person):
        def __init__(self, fname, lname):
          super()._init_(fname,lname)
      
  4. 添加属性
    创建子类对象时新加入的变量,应该在子类的_init_()函数中提前声明对应参数
  5. 添加方法
    在子类中添加的与父类中函数同名的方法,将覆盖

迭代器

  1. 对于可迭代的对象(Iterable)
    列表、元组、字典和集合都是可迭代的对象
    • 迭代器inter()方法配合next()方法
    • for循环遍历
  2. 创建迭代器
    把对象/类创建为迭代器,必须为对象使用 __iter__()__next__ 方法
    之后可以采用for循环遍历

作用域

  1. 局部作用域
    • 在函数内部创建的变量仅在该函数内部可用
    • 使用global关键字使局部变量成为全局变量
    • global关键字在函数内修改全局变量
  2. 在主体创建的变量是全局变量
  3. 对于函数内部和外部的同名变量,python会将它们视为两个单独的变量,可使用范围不同

模块

模块即包含一组函数的文件,可在程序中引用

  1. 创建模块
    文件扩展名为 .py,如module.py
  2. 使用模块
    import语句,如import module
    引用模块中函数的语法为import 文件名.函数名
    使得不同模块的同名函数也可以正常引用
  3. 重命名模块
    导入模块时使用as关键词创造模块别名
  4. 导入部分部件
    from关键字导入部件,如module中导入person字典
    from module import person
    
    from关键字导入元素可以直接引用
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值