python基础语法知识

1、cpu ——内存———硬盘

程序中要处理的数据要保存在变量中,一个程序占用一块内存,一个变量是一个小内存,内存中保留着好多数据

Ipython是交互式,可以直接输出变量

pycharm是解释器执行程序时要print(),这是两者的区别

2、Pycharm调试一行一行向下执行,执行完毕之后程序中的变量就会被完全释放

input()输出的类型都是字符串!

3、If条件语句包含在最外部:break和continue用在循环体内部的

当从1-10循环执行的时候:只要到3就结束循环:

Break作用是在循环语句内部,当某一个小条件成立之后,不需要在执行后面重复执行的代码,增加一个条件if:

If I==3:

        Break

当从1-10循环执行的时候:只有3不执行循环代码就用continue:

在使用关键字之前,需要确认的计数是否修改,否则可能会导致死循环

if I==3:

        I = I+1

        Continue

4、默认不换行:默认在后边添加

print(“*”,end=“”)

5、循环嵌套:

增加一个小的循环,专门负责当前行中,每一列中的星星显示

6、条件多时,在大的条件前和大的条件后增加一个小括号!!增加8个空格的缩进!!1先找一个条件多的情况,在找一个简单的条件,最后把其他情况放到一个else中去!

在判断条件中注意可以加括号然后在换行这样看起来就好看了

7、在Ipython中倒包然后random.就会打印出包下边的方法

8、转义字符:

\t 在控制台输出一个制表符,协助在输出文本时,垂直方向上保持对齐!!

\n 在控制台输出一个 换行符

\ 在一个字符串中输入一个双引号,转义字符

99乘法表,先分解成一个一个的小元素,在根据小元素在进行变量分配

一个一个的分配和替换,一步一步的分析!%d。一个一个分析

9、无限的循环应用场景:由用户主动决定什么时候来退出循环!!!

当你输入错误,又想重新输入时,这时就用到了无限循环的应用

for 循环时用来遍历集合的,现在是需要不停的循环、不停循环,当用户主动选择0时才退出循环!这时需要选择while循环达到不停的循环的作用,while True: 然后当你向退出循环时就要在某一个条件下break一下!

10、TODO 后边加一个空格,就会提示你以后需要做的任务高亮显示!

11、右键修改变量名:rename

12、在文件开头添加一个shebang符号也就是#! /usr/bin/python3 这是python解释器的完整路径

13、数据存在内存中(只要有新数据就会在内存中开辟一个新的空间)

变量存储着数据在内存中的地址(变量中的地址的动作就叫做引用)用ID(变量名)来查询数据存储的地址

如果一个变量已经被定义,如果一个变量赋值的时候,本质上是修改了数据的引用!!

14、函数的参数和返回值都是通过数据的引用来传递的!

15、可变类型:列表和字典调用方法修改内部的值但是地址不会变化,如果使用赋值语句的话地址会变化的

如果使用赋值语句肯定会修改地址的!!!1

16、在字典中key只能使用不可变类型的数据,

17、hash是一种算法:作用是提取数据的特征码(指纹)

接收一个不可变类型的数据作为参数!!

返回结果是一个(特征码)整数!!

在python中为乐保证对字典中后续处理的方便(增删改查),在添加键值对的时候,python首先调用hash函数对字典中的key进行hash,会让字典中保存的数据有一个更好的优化,

18、生命周期:局部变量在函数生命周期的时候使用才会生效,(保存函数内部临时使用的数据)

19、在函数内部要永久修改全局变量的值就用global+变量名,意思是global关键字会告诉解释器后面的变量是一个全局变量,子啊使用赋值语句时,就不会创建局部变量,有global时就不要在函数内部创建局部变量了

20、函数什么时候需要参数呢:函数内部需要处理外部的数据时

当函数内部需要处理的数据不确定(就需要从外界传递参数到函数内部)

需要函数完成后需要汇报结果,此时需要返回值

21、函数返回元组是没有小括号的,

接收返回元组的结果形式:用不同变量进行接收!!

22、+= 在使用字符串时,是先相加在赋值

但是在使用列表时,调用extend方法,把另外一个列表整合到这个列表中

23、缺省参数:指定默认值的参数

应用场景:有一个参数经常出现某一个数设为缺省值

好处:简化函数调用

定义位置:末尾

调用多个缺省参数的函数时,使用关键字参数传递参数

24、元组和字典的拆包:

应用场景:需要调用带有多指参数的函数时,开发时需要把元组变量或者字典变量传递给函数内部时!!!在元组加*,字典前加**

元组变量传给args,字典变量传给kwargs,简化传递方式

25、递归:函数内部自己调用自己的函数

只是参数不同进行相同的处理

先考虑递归出口:当满足一个条件时,函数不在执行(一层一层的返回)倒过来想,把出口指定为最小的数字

做假设函数能处理1。 num-1. 的相加,就定义变量函数调用自己(核心是两个数字的相加num+temp)

26、列表:用ipython 变量. +tab键盘

记录一串信息:不用给变量反复起名,只定义一个列表变量就行

方法是一个变量名.

函数是函数名.

关键字:del从列表删除一个元素。不需要小括号

函数:len 需要小括号

方法:. 需要小括号

关键字:python中有33个关键字import keyword。 不需要使用括号

函数:需要死记硬背呀

方法:可以在智能提示中有提示,是对前面对象的操作

应用场景:列表存储多个相同类型的数据,然后进行重复吧

27、元组:.count和.index只有2个方法

应用场景:作为函数的参数和返回值

                可以格式字符串

                可以让列表不可修改,保护数据安全,转换成元组

28、字典:应用场景:

存储描述一个物体的信息

常用操作:删除.pop(key)

统计键值对数量len(dict)

合并字典:字典.uodate(新字典),如果key相同时覆盖原有的键值对

字典遍历:for k in xiaoming_dict:这样是得到的key

29、字典和列表应用场景:

将多个字典放在一个列表中,在进行遍历,在循环体内对每一个字典进行相同的处理!!!1

30、字符串:6大方法!!

去除空白字符:

拆分和连接:

文本对其:

大小写转换:

查找和替换:

判断类型:

31、公共方法:这几种数据类型都能使用的方法(列表,元组,字典,字符串)

内置函数:len\del\max\min\cmp\

Max针对字典是只针对字典的key进行统计

比较两个字符串用比较运算符比较!

运算符:+ * in not in <=. >>==

合并,重复,元素是否存在,元素是否不存在,元素比较

32、列表的append和extend方法区别【】

33、for else 应用场景:在迭代遍历嵌套的数据类型,进行数据搜索时才用到(例如一个列表中包含多个字典)

把班上所有同学详细信息字典存到列表中,现在查找某一个同学的详细信息,如果找到了就不需要继续找了

find_name = “小妹”

for stu_dict. In. Students:

        If stu_dict[“name”] == find_name:

                Print()

                break

既不找小妹,也不找阿土,,给你一个字典中没有的人,那就用到了else了,

搜索列表时,所有字典检查之后,都没有发现需要的搜索目标,还希望得到一个统一的提示就会用到for. Else. 语法了

For。 else。 是当所有循环没有找到时,统一执行一次!!1如果在内部如果没有找到就会都执行一次else

34、jenlins2.138.2。 易百教程!

       Jenkins的管理员密码:在下面

       vim /Users/cheng/.jenkins/secrets/initialAdminPassword

35、石墨文档

36、子类调用父类的方法是Dog.bark(self),不要忘记这个self

父类名.方法(self)(python3中不推荐使用这种方法)推荐super().方法

37、定义类属性标记是否!!!!!!

#判断是否执行过初始化动作

if Musicplayer.init_flag:

        return

#如果没有执行过,则执行初始化动作

print("初始化播放器")

38、异常:

代码写完后,交给python的解释器执行

39、游戏模块:

pygame

Python3 -m pygame.examples.aliens

40、

Vim +文件名 +。 直接定位到文件的最后一行,不加+就默认定位到第一行

产生交换文件按键d就能删除交换文件

x 就相当于wq保存并退出

命令分类:

one:重复次数:命令模式下输入一个数字,再加上该命令重复执行的次数

Two:移动和选择:冒号+行数。 或者行数+gg 向上翻页ctrl+b 向下翻页ctrl+f. 屏幕不动情况下—— 屏幕顶部H。中间M。 底部L

段落为单位切换光标{ 向上寻找段落。 }向下寻找段落

括号切换,括号都是成对出现的用shift+%

标记:m后加一个字母(随便)。 在返回的时候用单引号+前面的字母(相同标记会被覆盖,删除行同时也会删除标记)

three:编辑操作:

选中文本小写v+k向上选中 +j向下选中从光标开始到光标结束的文本! 大写v把途中经过的行全选中,ctrl+v纵向选择

shift+【

four:撤销和重复:(删除命令和移动命令可以相结合使用)

删除用d 撤销删除用u. (Undo). ctrl+r(恢复撤销的命令)

删除x. 5x。一下删除5个字符 Dd删除所在的行 5dd删除5行 D大写的d是从光标的位置一直删除到最后.

删除第四行到第六行d6G

dw删除从光标开始到单词末尾

d0删除到第一行的其实位置

D’a. 使用m命令增加的标记,把光标所在位置到标记之间的代码全部删除

five:复制和黏贴:

yy复制一行。 nyy复制多行 p黏贴. Np就是黏贴n次

five:查找和替换:

six:编辑:

41、utf8mb4增加了一些表情符号!

42、即时通信IM

43、删除项目的时候,下面的逻辑删除不用更改,但是在做下面统计相关的东西的时候要记住把删除的给去除掉!怎么才能删除掉??

44、type问题!!研究一下(记住主键不能当作写死变量的那一列)

45、接口的内容可能因为权限随时更改时显示的内容会变的时候,这时候可以根据实际情况重新调用这个接口,实现数据的实时更新!!(可以在登录的时候调用,也可以在切换的时候调用!!)

46、用户容易输入错误的数值,把这个数值设置私有属性,,要是想修改的话就用get和set方法内部修改,set的时候写逻辑设置范围(用@propery可以实现同样功能)@salary.setter(这是对salary属性的设置,前提是这个类必须有salary这个属性),这样用户输入错误的时候就会调用内部的方法,有提示了

47、<__main__.Person object at 0x101e3b6d8>这是__str__的方法实现的打印结果

48、python中的特殊方法(运算符的重载)

+ 对 __add__

- 对 __sub__

< 对__lt__

<=对 __le__

== 对 __eq__

!= 对__ne__

|对 __or__

^ 对 __xor__

&对 __and__

<< 对 __lshift__左移

>>对 __rshift__右移

*对__mul__

% 对__mod__模运算(取余)

//对__floordiv__ 整数除

**对__pow__指数运算

__getattr__点号运算(获取属性)a.xxx

__setattr__属性赋值,a.xxx = value

__repr__打印 (print())

__str__ 转换

__call__函数调用 a()

__getitem__索引运算(a[key])

__setitem__索引赋值(a[key]=value)

__len__ 长度 (len(a))

49、python中的特殊属性:

class.__mro__(类层次结构)

class.__subclasses__()子类列表

class.__base__(类的基类)

class.__bases__(类的基类元组,最近的上一层)

obj.__dict__对象的属性字典形式显示

obj.__class__对象所属的累

50、都能够代码复用的作用:

继承:is狗是动物

组合:has手机有cpu(两个类,其中一个类的实例当作另外一个类的参数传进去,就能用另外一个类调用另外一个类中的方法了!!)

51、设计模式:

工厂模式:创建者和调用者的分离,工厂类实现类,创建对象的统一管理

定义一个工厂类,下面定义一个生产方法:判断条件,调用生产品牌的类

定义不同品牌的生产的类

调用的时候实例化工厂对象,在调用生产方法(传递不同的生产的对象)

52、单例模式:重写__new__属性(创建和初始化都应该是一次)

class my single:

_obj = none

__init__flag = True

Def. __new__(cos,*args,**kwargs)

If cls.__obj == none

Cls.__obj = object.__new__(cls)

Return cls.__obj

Def __init__(self,name):

If my single.__init_flag:

print(“inin____”)

Self.name = name

My single.__init_flag = False

53、round\float 新生成另外一个对象

增强运算符。 += *=

54、时间:unit时间点:1970年1月1日00:00:00。 Time.time()用秒.微妙表示

// 整数除 / 小数除

55、定义多点坐标-绘出折线-计算起始点和终点距离

Turtle.penup()

Turtle.goto

Turtle.pendown()

Turtle.write()

56、ascii是一个字符表示一个汉字(8位代表一个字符),unicode是三个字符表示一个汉字

57、str()函数把其他类型转成字符串,replace()字符串的替换对字符串修改(生成新字符串,以前的变量就回收回去了)

58、join常配合列表来使用(只生成一个对象,+是生成多个对象)

59、字符串驻留机制(符合标识符规则的字符串仅包含下划线,字母,数字)同一字符串对象的可以好多变量引用(对象地址是同一个)

60、a.isalnum 所有字符全是字母或数字

a.strip(“*”)去除字符串首尾信息 a.capitalize()新字符串,首字母大写,

A.title() 新字符串,每个词首字母都大些。 A.swapcase()所有字母大小写转换

格式排版:a.center(10,”*”) a.isdigit()是否只由数字组成

61、制表符、换行符、空格 ————都属于空白符isspace()

62、可变字符串:sio = io.stringIO(s)可变对象

       sio。seek(7)移动到指定字符

sio.write(“g”)修改这个位置上的值

Sio.getvalue()获取sio字符串的值(修改频繁的时候用,以上过程没有产生新的字符串对象)

63、bin()把转换成二进制数,按位亦或意思是两者不同为1,相同为0(针对二进制数)

a = 3. A<<2. 左移以为相当于乘以2,两位乘以4

64、规则:复杂的就用括号就行

位运算和算数运算>比较运算符>赋值运算符>逻辑判断

65、对象()调用了__call__方法

66、python 中没有重载,可以定义多个重名函数,但是只有最后一个是有效的!

python方法的动态性

67、a = Student() >>>>a.say_score() >>>>>Student.say_core(a)

68、try。 except时候能确定的就要if判断一下才好!

69、def是建一个对象堆里面开辟函数对象(包含了参数信息,代码信息)

栈里面保存函数名变量(就是堆的地址)

调用时候找到堆对象找到里面的代码(执行里面的代码)

70、参数的传递赋值:(全是引用传递而不是值传递)

可变对象(字典、列表、集合、自定义的对象)

不可变对象(数字、字符串、元组、function,布尔值)

传递可变对象的引用:两个变量保存着同一个对象的地址(实参和形参指向同一个对象)

传递不可变对象的引用:赋值操作的时候,不可变对象无法修改,系统会创建一个新的对象

对象多了个修改之后新的对象,然后被形参指向!

71、浅拷贝:不拷贝对象的内容,只是拷贝子对象的引用(修改里面的嵌套数据导致自己和拷贝出来的对象都要被修改)

      深拷贝:会连子对象的内存全部拷贝一份,对子对象的修改不会影响到源对象(这个对象的所有子孙都要拷贝一份)(修改拷贝出来的里面嵌套的对象会导致只有自己被修改)

72、传递不可变对象的时候(如果发生拷贝)用的是浅拷贝(传递嵌套的结构)然后在函数中修改内部的结构(浅拷贝都会变)

73、位置参数:传递时一一对应

    默认值参数:不传时默认就是定好的数,放到后边

    命名参数:调用时把形参名字和数字绑定好

    可变参数:* **

    强制命令参数: *在参数中的最前面,剩下的通过命名参数传递

74、递归:自己调自己

函数一旦被调用就开辟(stackfree栈针压栈,进入(栈里面执行代码))test01还没调用完毕又调用函数test02开辟栈针,,当函数执行完毕栈针就被销毁了,然后test01栈针也结束被销毁。。。但是自己调自己(递归时)就把自己的栈空间满了,程序崩溃了!

第一个打开的方法最后才关闭

75、嵌套函数_内部函数_数据隐藏

76、可迭代对象:序列(字符串、列表、元组),字典,迭代器对象,生成器对象

77、循环嵌套:外层循环是行循环,内层循环是列循环(外层是大循环,里面是小循环)

\t 是取消换行(制表符相当于tab)—————print()是取消换行的意思

\n是换行符

end=“\t” 表示以什么空白制表符结尾

end=“\n”表示以换行符结尾

78、:e . 查看当前文件有啥文件

N .文件名。 在此目录下新建文件名

W. 文件名。 保存当前内容至另一个文件中,但仍停留在当前文件中

79、分屏命令:

:sp + 文件名。 横向分屏

:vsp +文件名 纵向分屏

控制窗口:ctrl + w

W 切换到下一个窗口

R. 互换窗口

c 关闭当前窗口,不能关闭最后一个窗口

q 退出当前窗口,如果是最后一个窗口,则关闭vi

O。关闭其他窗口

80、光标移到最前方contral+a ,移到最右方contral+e

82、闭包:一个函数的内部的函数在内部定义和调用!函数式编程(1、内部返回一个函数对象,不加括号。2、闭包的函数使用到了外部函数的变量,满足这两点要求就是闭包)内部用到的变量只能读不能修改(闭包中使用nonlocal时候比较多)

83、汉诺塔递归:

#汉诺塔:

def hanoi(n,x,y,z):

        if n==1:

            print(x,"-->",z)

        else:

hanoi(n-1,x,z,y)# 将前n-1个盘子从x移动到y上

print(x,"-->",z) #将最底下的最后一个盘子从x上移动到z上

hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上

n = int(input("请输入汉诺塔的层数:"))

hanoi(n,"x","y","z")

84、f.tell(). 返回光标的位置

f.seek(45,0)移动文件指针的位置从0开始偏移45个位置。把光标定位到这个位置

85、list(f)直接把文件转换成一个列表

f.close()就写进文件中去了,如果没关闭就写到缓冲区里面去了

86、文件操作保存:

#最后进行函数的封装!!

f = open("record.txt")

boy = []

girl = []

count = 1

for each_line in f:

if each_line[:6] != "=======":

(role,line_spoken) = each_line(":",1)

if role == "小甲鱼":

boy.append(line_spoken)

if role == "小客服":

girl.append(line_spoken)

else:

file_name_boy = "boy_" + str(count) + ".txt"

file_name_girl = "girl" + str(count) + ".txt"

boy_file = open(file_name_boy,"w")

girl_file = open(file_name_girl,"w")

boy_file.write(boy)

girl_file.write(girl)

boy_file.close()

girl_file.close()

boy = []

girl = []

count += 1

f.close()

87、

easygui:图形用户界面ui设计(是在tkinter上运行的)

msgbox 对话框

choicebox 对话框

ccbox. 对话框

import easygui as g

import sys

while 1:

g.msgbox("嗨,欢迎进入第一个界面小游戏")

msg = "请问你希望在鱼c工作室学习到什么知识呢?"

title = "小游戏互动"

choices = ["恋爱","编程","琴棋书画"]

choice = g.choicebox(msg,title,choices)

g.msgbox("你的选择是:"+str(choice),"结果")

msg = "重新开始游戏"

title = "请选择"

if g.ccbox(msg,title):

pass

else:

sys.exit(0)

88、内存函数:issubclass()注意自身也可以是自身的子类!!

isinstance(object,classinfo)检查实例对象是不是属于这个类的,第二个参数也可能是元组

hasattr(object,name属性) 测试一个对象是否有特定的属性,其中属性要用引号扩起来

getattr(object, name, default)如果娶不到就到你设置的默认值取

setattr(object, name, value)

Delator(object,name)

89、魔法方法:带双下划线的方法,是面向对象的一切!

#斐波那契数列,迭代器!!

class fibs():

def __init__(self,n=10):

self.a = 0

self.b = 1

self.n = n

def __iter__(self):

return self

def __next__(self):

self.a,self.b = self.b,self.a + self.b

if self.a > self.n:

raise StopIteration

return self.a

x = fibs(100)

for i in x:

print(i)

90、

定制序列:不可变__len__()和__getitem__方法

可变多了个__setitem__和__delitem__方法

#编写一个不可变的自定义列表,要求记录列表中每个元素被访问的次数

class countlist:

def __init__(self,*args):

self.values = [x for x in args]

self.count = {}.fromkeys(range(len(self.values)),0)

def __len__(self):

return len(self.values)

def __getitem__(self, key):

self.count[key] += 1

return self.values[key]

91、描述符:

#定义一个温度类,定义两个描述符,描述摄氏度和华氏度两个属性,自动传唤

class celsius:

def __init__(self,value=26.0):

self.value = value

def __get__(self, instance, owner):

return self.value

def __set__(self, instance, value):

self.value = float(value)

class fahrenheit:

def __get__(self, instance, owner):

return instance.cel*1.8 + 32

def __set__(self, instance, value):

instance.cel = (float(value)-32)/1.8

class temperature:

cel = celsius()

fah = fahrenheit()

92、生成器是迭代器的一种实现(只需要普通函数就行,不需要在定义类加了一个yield)

就是协同程序(函数调用都是局部调用,完事就交回去的)

转载于:https://my.oschina.net/u/3841099/blog/3026096

你可能感兴趣的:(python基础语法知识)