python 3 的基础语法 简要笔记

Python 的 rfind()and find()语法:

Python rfind() 返回字符串第一次出现的位置(从右向左查询),如果没有匹配项则返回-1。

Python find() 返回字符串第一次出现的位置(从左向右查询),如果没有匹配项则返回-1。

str.rfind(str, beg=0 end=len(string))

str是指要查找的字符串  beg开始查找的位置

python里面的sep语法,print('hello',' world', sep=',    ', end='!')

hello,      world!往两个字符串之间添加东西,

从键盘里面输入多个值 用input(). Split()此时得到的为字符型的值

想要的到整形的值 map(int,input().split()) ,这时才输入整形的值

判断语句用and 或者or连接

Input是输入input('please

input year')

title() 单词首字母变大写 str1.title()

upper() 字符串变大写str1.upper()

print('%d + %d = %d' % (a, b, a + b))

2+ 3 = 5

循环语句中的range

for x in range(101):

range可以用来产生一个不变的数值序列。

range(101)可以产生一个0到100的整数序列。

range(1,100)可以产生一个1到99的整数序列。

range(1,100, 2)可以产生一个1到99的奇数序列,其中的2是步长,即数值序列的增量。求水仙花数求素数

都是运用了简单的加减乘除和取余运算,再加一点if的判断和for循环

在Python中,函数的参数可以有默认值,也支持使用可变参数,所以Python并不需要像其他语言一样支持函数的重载,因为我们在定义一个函数的时候可以让它有多种不同的使用方式。

在python函数中,没有参数的时候,也可以运行程序,有参数时,运行参数。

当不清楚参数的数量时,可以选着可变参数

# 在参数名前面的*表示args是一个可变参数

# 即在调用add函数时可以传入0个或多个参数

def add(*args):

python没有函数重载的概念,所以当两个函数名同名时,后面的函数名会覆盖前面的函数名

str2 = 'abc123456'

print(str2[::-1])  # 654321cba

print(str2[-3:-1])  # 45

空的地方表示全选 ,第三个选择表示步长

list1.remove(7)//删除列表里面的数 7 是列表里面的数

f = [x for x in range(1, 10)]

x从1到9以x的形式表现出来

f = [x + y for x in 'ABCDE' for y in '1234567']

x先于y 进行for循环 相当于一个for循环的嵌套

['A1','A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7',

'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7', 'D1', 'D2', 'D3', 'D4', 'D5', 'D6',

'D7', 'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7']

直接生成一个列表是加[],而采用列表的生成器语法是运用();

f = [x + y for x in 'ABCDE' for y in '1234567'] 列表

f = (x ** 2 for x in range(1, 1000))生成器

生成器好处是不占用额外的空间储存数据,缺点 需要时间去计算才能得到数据

元组中的元素不能修改,只能整体一起更新,原来的元祖被抛弃

将元组转化为列表 用list()

将列表转化为元组 用tuple()

.Pop()除去集合之中最小的一个数

字典:与列表、集合不同的是,字典的每个元素都是由一个键和一个值组成的“键值对”,键和值通过冒号分开。

字典 :{}

元组:()

列表:[]

.sort()直接对列表进行排序

sample(序列a,n) 功能:从序列a中随机抽取n个元素,并将n个元素生以list形式返回。

在面向对象编程的世界中,一切皆为对象,对象都有属性和行为,每个对象都是独一无二的,而且对象一定属于某个类(型)。当我们把一大堆拥有共同特征的对象的静态特征(属性)和动态特征(行为)都抽取出来后,就可以定义出一个叫做“类”的东西。

也就是class

Print()出来的东西要想不分行的话 要在最后加一个 end=” ”

Class 叫类, class 后面跟着是对象

@Classmethod 定义类方法 主要用途之一是定义:“代替构造函数”

@staticmethod 定义静态方法

静态方法并非无用 - 它是一种将函数放入类中的方法(因为它在逻辑上属于那里),同时表明它不需要访问类。

对象有属性和方法

一般来说 对象的属性都是设置为私有的,可以加在属性命名时__,

对象的方法是公开的

但是一般来说,不建议将属性设置为私有,这会子类无法访问()

所以 一般让属性名以单下划线(_)开头,表示属性是受保护的,这只是一种暗示和隐喻(对程序猿来说)

什么是方法:

在我们创建了对象之后,只需要给对象发送一个消息(调用方法)就可以执行方法中的代码,也就是说我们只需要知道方法的名字和传入的参数

也就是def 定义的就是方法

是对象执行的具体的动作。

@property 是一个包装器,可以用来包装setter和getter方法,可以直接用方法访问,而不是在前面加set_ 或者get_;要更加简洁一些

  @age.setter

__slots__ 变量限制class的属性,

代码为__slots__= ('name', 'age')

类方法:类方法的第一个参数约定名为cls,它代表的是当前类相关的信息的对象

通过这个参数我们可以获取和类相关的信息并且可以创建出类的对象

静态方法和类方法都是通过给类发消息来调用的:也就是说,静态方法和类方法可以直接调用属性加方法进行访问。

static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;

如果文件a.c需要引用b.c中变量int

v,就可以在a.c中声明extern int v,然后就可以引用变量v。

继承和多态,

提供继承信息的我们称之为父类,也叫超类或基类;得到继承信息的我们称之为子类,也叫派生类或衍生类

父类初始化代码 def __init__(self, name, age):

子类初始化代码def __init__(self, name, age, grade):

super().__init__(name, age)

super().__init__就是继承父类的代码


@abstractmethod

所谓抽象类就是不能够创建对象的类

抽象方法只有在子类里面实例化才能用 

 Abc模块下面的一个包装器

randrange() 方法返回指定递增基数集合中的一个随机数,基数缺省值为1。

Global 和 nonlocal 的区别

[if !supportLists]第一,  [endif]两者的功能不同。

global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)。

[if !supportLists]第二,  [endif]两者使用的范围不同。

global关键字可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global修饰后也可以直接使用,而nonlocal关键字只能用于嵌套函数中,并且外层函数中定义了相应的局部变量,否则会发生错误

pygame 库的简单运用

 for event in pygame.event.get():从队列中获取事件

event.type  接口的type只读属性Event返回包含事件类型的字符串

你可能感兴趣的:(python 3 的基础语法 简要笔记)