Python学习笔记(1)—B站黑马程序员
Python学习笔记(2)—B站黑马程序员
Python学习笔记(3)—B站黑马程序员
在评论区找到的讲义:
B站的Python课程讲义
我使用的是Cent OS,不是Ubuntu。
使用python2(默认不支持中文):
使用python3(默认支持中文):
我的CentOS没有python3命令要安装
CentOS-python3命令安装
我的centos7里没有ipython和ipython3命令,百度搜了一下安装。
我没有把PyCharm下载到虚拟机上使用,直接下载到了本机。
下载了自动补全插件:
TabNine插件
Kite插件
设置解释器版本:
(1)单行注释
以#开头,规定:#后空一格再写注释
错误写法:
正确写法:
(2)多行注释
一对连续的三个引号(单引号,双引号都可以)
算数运算符的优先级:
python程序的执行原理:
程序用来处理数据,变量用来存储数据
变量的定义:
变量名 = 值
每个变量在使用前必须赋值,每个变量赋值之后该变量才会被创建
在python中,定义变量是不需要指定变量的类型的;
在运行的时候,pyrhon解释器会根据赋值语句等号右边的数据,自动推导出变量中保存的数据的数据类型。
可以使用函数 type(变量名) 判断变量的数据类型
在python 2.x 里 分int 和 long
在python 3,x 里只有int
python中不建议使用驼峰命名规则
演练:
if语句和下面所有带缩进的代码是一个完整的代码块,都包括在if条件语句内。
如何判断if语句内有哪些代码:点旁边的减号- 加号+
演练:
input 返回str类型,要进行类型转换
多行同时缩进:选中多行+Tab
缩进多了,往前退:shift+Tab
print()函数默认在输出完之后换行
如果不希望换行,添加 end=“”
print(“…”, end=“”)
end=“这里也可以写东西”
单纯的换行可以:print()
print(" * " ,end=“”) —>可以改为—>print(end=" * ") 同样是不换行输出
\t 转义字符的功能是可以在不使用表格的情况下在 垂直方向 按列对齐文本
函数的文档注释:
写在函数定义的下方第一行,该行开头空4个空格;
然后六个引号,在引号之间写注释;
如果该函数有参数,也要给参数进行注释,在第三个引号后回车,就会出现注释;
在函数调用位置使用快捷键 ctrl+Q 就可以看到函数的注释信息。
比如:
注意:return表示返回,该函数中的后续代码都不会被执行。
del 关键字:
在日常开发中,从列表中删除数据,使用列表提供的方法,不使用 del
对于某个方法不知道怎么用:可以将鼠标放在该方法上,再按下 Ctrl+Q 就好了
元组定义之后,不能对元组进行增删改操作,即元组的元素不能修改。
虽然列表可以存储不同类型的数据,但是一般是在列表中存储相同类型的数据;
元组中可以存储不同类型的数据。
一般对于元组进行循环遍历的操作不是很多,因为元组中的数据类型可以不同,无法进行具体的操作。
poem_str.strip()返回一个新的字符串,再.center()居中对齐
字符串,列表,字典,可以使用max() min()
max()和min()函数对于字典只针对key比较
python 3.x取消了 cmp() 函数 比较两个数
但是可以使用比较运算符比较 数字,字符串,列表,元组,但是两个字典之间无法进行比较。
字符串,列表,元组,都可以利用 * 进行重复:
字符串,列表,元组,可以使用 + 进行拼接合并:
列表的extend()方法,append()方法,也可以实现上述效果:
但是extend()方法,append()方法,修改的是原列表,而 + 会生成一个新列表。
原列表.extend(列表)方法,会将列表的元素追加到原列表尾部;
原列表.append(元素/列表)方法:
添加元素/列表到原列表,如果参数是列表,会将该列表看作是一个元素添加到原列表中
成员运算符:in,not in,可以作用于 字符串,列表,元组,字典。
但是字典,只能作用于字典的key。
当for循环结束之后,会执行else下的代码;
当循环体代码中出现break时,else下的代码不会执行。
在cards_tools中,写一个函数来实现欢迎界面:
再在cards_main中导入cards_tools模块,使用函数。
1.3 在cards_tools模块中再新增另外三个功能的函数的框架
再在cards_main中导入cards_tools模块,使用其中的函数。
如何同时修改多次出现的一个变量名?
右键变量名—>Refactor—>Rename—>Rname code occurrences
如何快速给一个函数添加注释:鼠标放在函数名上,点击小灯泡,
点击 Insert a doucmentation string stub
一般在命令终端输入命令:python3 文件名
来执行文件
python3 就是解释器
也可以不使用解释器执行文件:切换到文件目录,输入 ./文件名
为什么这样也可以?
在要执行的文件的第一行加上:
#! python3解释器的路径
然后给该文件加上可执行权限
就可以使用 ./文件名 的方式 运行这个文件
不可变数据类型,在内存中的数据不能被修改;
可变数据类型,可以使用append()等方法,改变内存中的数据,但是该内存的地址不会被修改。
但是使用 = 赋值语句,内存地址是不一样的:
如 a = [1,2,3]
和 a = [3,2,1]
这两个a保存的内存地址是不一样的。
字典的key只能使用不可变数据类型:数字,字符串,元组
不能使用可变数据类型:列表,字典
value可以使用任意类型的数据
hash()函数只接收一个不可变类型的数据作为参数
返回多个结果可以使用元组;如果函数返回的类型是元组,小括号可以省略。
如果函数返回的类型是元组,同时希望单独处理元组中的元素;
可以使用多个变量,一次接收函数的返回结果。
无论传递的参数类型是 可变 还是 不可变,在函数内部针对参数使用 赋值语句,不会影响调用函数时传递的实参变量。
如果传递的参数是 可变类型,在函数内部,使用 方法 修改了参数,外部实参同样会改变。
对于列表变量:
列表1 = 列表1 + 列表1 ---> 正常的赋值 (函数内部的参数变化不会影响函数外部的参数)
列表1 += 列表1 ----> += 相当于 extend()方法 (函数内部的参数变化会影响函数外部的参数)
这两个是不一样的。
对于其他类型的变量,列表1 += 列表1 和 列表1 = 列表1 + 列表1 是一样的。
---> 正常的赋值 (函数内部的参数变化不会影响函数外部的参数)
gender = True
为什么不直接传一个元组?
如果直接传一个元组:
def sum_numbers(agrs):
...
print(sum_numbers((1,2,3)))
这样更麻烦。
demo(*gl_nums, **gl_dict) 与 demo(1, 2, 3, name="小明", age=18) 输出结果相同