1、注释以及编码格式的声明
- 单行注释:# (后面放上被注释的内容)
- 多行注释:字符段落的上下加上三引号 举个例子: ''' ...'''
- 编码格式的声明:#coding:utf-8 或者是 #coding=utf-8
2、代码编写格式和一些琐碎说明
-
同一级别的代码块所尽量必须相同 并且不要在行尾加上分号
-
python里面的if等固定的词组叫做保留字 不叫关键字
-
python是一种动态类的语言,变量的类型可以随时变化,随着赋值的内容的变化而变化
-
内置函数type()可以返回变量类型 直接放print里面打印即可
-
内置函数id()可以获取变量的内存地址,直接单独放在一行自动打印输出,不同名字的变量赋相同值的话指向的地址也会是一样的
-
str()函数用于将数值转换成字符串 方便输出
-
print只能输出字符串类型的,其他类型变量必须转成字符类型的才能被print出来
-
字符串中使用单双引号必须在同一行 三引号内的字符序列可以分布在连续的多行上面 并且保留格式
3、输入输出
- 变量名=数据类型(input("提示文字")),可以直接在屏幕输入
- 输出print(输出内容) 里面还可以是例如if的表达式 并且一般一条print输出之后会自动换行,如果想要不换行print(a,b) 中间用逗号分开,print(a if a>b else b)
- 在print()里面 " ,end=" " 双引号里面这部分表示不换行输出,下一条print和此条输出语句在一行一起输出
4、运算符
- python里面的除法"/"之后 保留的可以是浮点数 要想舍去浮点部分应该用"//"这个除法符号
- "**" 两个星号 表示幂运算 返回x的y次方
- 逻辑运算符在这里面不是符号表示了 是"and" "or" "not" 表示
5、条件表达式
-
python里面的if语句的条件判断不需要加上括号,但是在判断语句后面要加上冒号,比如
if a>b: r=a
-
还可以放在一行里表示 比如:r=a if a>b else b [C语言里面是a= b>0? b:c]
中间条件判断为true则返回if语句左边的值 否则返回右边的值
-
多选一的情况在C里面有if - else if - else,但是在python里面"多选一表达方法":if - elif -else,if和elif都需要表达式判断真假,也就是说后面都要跟着判断表达式,而else不需要判断
6、循环体-for循环
-
for 循环变量 in 对象: 循环体 举个例子:for i in range(101): result+=1
-
range()是一个内置函数,用于生成一系列连续的整数 多用于for循环,格式range(start,end,step)
- start:用于指定计数的起始值,可以省略,省略的话表示从0开始
- end:用于指定计数的终止值(但不包括该值),不能省略
- step:指定两个数之间的间隔,可以省略,省略的话就表示为1
在使用此内置函数的时候,如果只有一个参数表示的是end,被省略的start表示0,如何有两个参数表示的是start和end,有参个参数的时候,最后一个参数才表示步长
-
也可以遍历字符串 for ch in string:
-
注意for语句最后也要加冒号
-
最后加上end="",可以避免print自动换行,print(str(j),end='')
7、序列
-
索引可以是正数也可以是负数,正数的所以最左边是0,索引是复数的时候最右面是-1,从右往左是从-1开始到...
-
切片:
如果指定了步长,那么就按照该步长遍历序列元素,否则一个个的遍历
注意:这块end部分,截至部分是按照总个数来排序的,也就是说如果说是6,那么这个截至的位置就是从第一个元素开始数六次所到的数
-
求序列长度是len() 别记错了
8、列表
-
可以使用list()直接将range()函数循环出来的结果转换成列表 list(range(10,20,2)) ---> [10,12,14,16,18]
-
可以通过del删除列表 用法:del 列表名
-
使用for循环和enumerate()可以实现同时输出索引值和元素内容 for index item in enumerate(列表名):
-
添加元素:借助append,用法:列表名.append(添加的对象)
-
修改元素:直接重新赋值即可
-
删除元素:借助索引,直接用del 列表名[索引值],也可以用列表对象的remove()方法,列表名.remove(删除内容)
-
对列表的统计计算:
- count() 用于获取指定元素在列表中出现的次数 用法:列表名.count(对象内容)
- index()获取指定元素在列表中首次出现的位置 用法:列表名.index(对象内容)
- sum(列表名[start,end]) 用于求列表中元素的和,一般默认没参数时是从0到最后
-
排序:
-
列表对象的sort()实现 列表名.sort(reverse=True),true表示降序 false表示升序,默认也是升序
-
内置sorted()函数实现 sorted(reverse=True)升降序表示方法一样 ,只不过这个是直接用,不用列表名调用了
新列表名=sorted(被排序的列表名,reverse=True)
-
9、元组
元组用于保存程序中不可修改的内容,元组中的元素不可以单独修改,而列表可以任意修改
- 创建元组和创建列表类似,创建元组用小括号(),创建列表用中括号[],但是实际上小括号不是必须要加上的,只要用一组值用逗号分开,python就会认为这是个元组,比如:a="你好","2020","这个世界"
- 注意区分:
python
verse = ("一片冰心在玉壶",) //这是元组
verse = ("一片冰心在玉壶") //这是字符串
-
可以使用tuple(range()直接将range()函数循环出来的结果转换成列表 list(range(10,20,2)) ---> (10,12,14,16,18)
-
元组不能单独地对元组中某一个值进行更改,但是可以对整个元组进行修改
-
**元组中如果只有一个元素,一定要在最后加上逗号!**不加上的话就会被当成一个字符串了
10、字典
-
是一个无序的可变序列,并且只能通过键值来读取而不能通过索引来读取,字典名={'键名1':'元素的值','键名2':'值'} 注意:键值必须唯一,字典中的键是不可变的,所以不能用列表作键值
-
字典的创建还有一种方法:借助已有数据快速创建字典,用dict()方法
- 字典名字=dict(zip(list1,list2))
注释:zip()函数,用于将多个列表或者元组对应位置的元素组合为元组,并返回包含这些的zip对象
python>>> keys = ['a', 'b', 'c'] >>> values = [1, 2, 3] >>> dictionary = dict(zip(keys, values)) >>> print(dictionary) {'a': 1, 'b': 2, 'c': 3}
-
也可以直接在dict()里面,加入许多块类似 键名='元素的值' 的内容
-
或者直接添加dict.fromkeys(list1),只是包含键名的字典,创建值为空的字典
-
也可以借助字典和元组创建字典:dict{元组名字:列表名字},这样的话表示一个元组代表一个键
注释:这时候用的是大括号,并且中间用冒号表示,还有就是键不能用列表表示
-
字典的打印,一种是直接利用print(字典['键值'])
要么就是通过get('键值','键值对应为空的时候的返回值')
11、集合
集合最主要的作用就是去重
-
集合名字={元素1,元素2,...},因为set是无序的,所以每次输出时元素的排列顺序可能与创建时不同
-
也可以用set()函数创建集合,比如集合名=set(【列表元素1,列表元素2,...】),或者在里面直接放一个字符串,但是他会自动去掉重复元素
-
表示空集合的时候只能借助set函数实现,不能直接只是用个大括号表示,因为这表示空字典
-
添加元素是借助add()函数,直接集合名字调用然后在括号里填充添加内容
-
删除元素,remove(),clear(),pop()
-
集合间的运算,& 表示交集,| 表示并集,- 表示差集,^ 表示对称差集
12、字符串
- 通常使用:变量=字符串名字.encode('GBK(或者其他编码格式)'),表示将旧字符串转换成按照新要求的这个编码格式
- decode('编码格式'),表示解码,在设置解码所用的编码格式时,需要与编码时采用的字符编码一致
- 使用"+"可以进行字符串之间的拼接,但是不允许字符串直接与其他类型的数据拼接,比如和整性"num=123",可以转换成字符串后进行拼接:比如 +str(num)
- 要想算字符串的实际长度,应该在len()函数中,放入的是字符串名字.encode('编码格式'),而不是单一的字符串名字
- spilt('被分割的符号字符','被分割的次数'),被分割的次数不指定表示全部分割,最后切分成字符串列表
- lower()和upper()用于将字符串中字母的大小写转换
13、函数
-
需要一个关键字 def 函数名(参数):,然后下面放函数体,别忘了冒号
-
这里的值传递(形参改变后实参不变化)和引用传递的区分是区别在,形参如果是可变对象 比如列表的时候,就是引用传递,而形参是字符串这样的不可变对象,就是值传递*
-
python里面函数的参数可以设置默认值 比如 def a(height,person='路人'):
注意:为形参设置默认参数的时候,默认参数指向的一定是不可变对象,比如NONE或者字符串,不能是列表之类的
-
可变参数:
-
形式参数名字:可以让函数接受多个参数,但是注意,如果是多个参数的话实际上是将他们放进了一个元组中,所以,如果想将多个参数都输出,应该借助for循环
如果将一个前面定义好的列表当实际参数放进函数中去,应该在列表名字前面加上号,比如a(*list)
-
形式参数名字:这次不是放在元组了,是放在字典里
-
-
python在定义全局变量的时候,这个变量只要在函数外面定义的,就是全局变量,在函数体中也可以访问到
当局部变量(函数体内定义的变量)和全局变量重名时候,对函数体的变量进行赋值后,不影响函数体的变量
-
在函数体内变量用global关键字修饰后,该变量也变成了为全局变量
-
匿名函数:
result = lambda [参数] :表达式 ,举个例子:result = lambda r:math.pi×r×r (求圆的面积),打印的时候
print( result® )
在使用匿名函数的时候需要定义一个变量,用于调用lambda表达式
14、类
创建类后通常会创建一个_ init _() 方法。类似java中的构造方法,但是这个方法必须包含一个self参数,并且必须是第一个参数
因为该方法调用的时候会自动传递实际参数self,因此当__ init __() 【前后两个双下划线】只有一个参数的时候,在创建类的实例的时候,就不需要指定实际参数了 eg: 实例类名=类名(),括号中不用填放参数
-
在python中 还可以通过类名动态的为类和对象添加属性,比如:类名.新属性名="这是一个新属性" 之后就可以直接用了
python#直接,类名.新属性名="这是一个新属性" Geese.beak = "收拾收拾"
-
注意:在类中的定义的方法(实例方法),如果这些实例方法想要调用类属性,必须加上类名字 eg:Geese.number
-
在python中定义私有属性和保护属性不像C++或者java中直接用private等关键字声明属性了,在这里直接借助下划线的数量和不同位置来声明。
eg:
-
在前面加上单下划线:(_foo),表示protect(保护类型),只允许类本身和子类访问,但不能用"from module import" 语句导入
-
在前面加上双下划线:(__foo),表示private(私有类型),只允许定义该方法的类本身进行访问,而且不能通过类的实例进行访问,但是可以通过如下方法访问:
"类的实例名._类名__xxx"
-
在这里直接借助下划线的数量和不同位置来声明。
eg:
-
在前面加上单下划线:(_foo),表示protect(保护类型),只允许类本身和子类访问,但不能用"from module import" 语句导入
-
在前面加上双下划线:(__foo),表示private(私有类型),只允许定义该方法的类本身进行访问,而且不能通过类的实例进行访问,但是可以通过如下方法访问:
"类的实例名._类名__xxx"
- 继承的时候是加一个括号,class 子类名(基类名)