admin管理员组文章数量:1794759
Python学习日记(初级篇01基础语法)——黑马程序员视频学习笔记
Python基础语法
- 一、开发环境
- 1.1虚拟机安装与设置
- 1.2Linux命令
- 1.2.1远程管理中的scp(secure copy)用于远程拷贝文件
- 1.2.2用户权限(概念了解)
- 1.2.3用户管理
- 1.2.4切换用户
- 1.2.5修改文件权限
- 1.2.6系统信相关命令
- 1.2.7软件安装和压缩
- 1.3Python语言与PyCharm
- 1.3.1解释器
- 1.3.2Python特点
- 1.3.3第一个Python程序
- 1.3.4PyCharm的初始设置
- 1.3.5新建项目
- 1.3.6多文件项目的演练
- 二、数据类型与运算符
- 2.1算数运算符
- 2.2比较运算符
- 2.3逻辑运算符
- 2.4赋值运算符
- 2.5数据类型
- 2.6转义字符
- 三、if语句
- 四、循环
- 4.1while循环
- 4.2完整的for循环语法
- 4.3break和continue
- 五、函数基础
- 5.1定义函数的格式如下:
- 5.2使用模块中的函数
- 5.3基础函数
- 六、公共方法
- 6.1Python的内置函数
- 6.2切片
- 6.3运算符
- 七、函数提高
- 7.1变量作用域
- 7.2多函数程序执行流程
- 7.3函数的返回值
- 7.4函数的参数
- 7.4.1位置参数
- 7.4.2关键字参数
- 7.4.3缺省参数
- 7.4.4不定长参数
- 7.5拆包与交换变量值
- 7.6引用
- 7.6.1了解引用
- 7.6.2引用当做实参
- 7.7可变类型与不可变类型
- 八、递归函数
- 九、匿名函数(lambda表达式)
- 十、高阶函数与内置函数
- 10.1高阶函数
- 10.1.1体验高阶函数
- 10.2内置高阶函数
- 10.2.1map()
- 10.2.2reduce()
- 10.2.3filter()
- 十一、文件操作
- 11.1文件操作的作用
- 11.2文件的基本操作
- 11.2.1打开
- 11.2.2读
- 11.2.3seek()用以移动文件指针
- 11.3文件备份
- 11.4文件和文件夹的操作
- 11.4.1文件的重命名与删除
- 11.4.2文件夹与目录
- 11.4.3批量重命名
- 参考黑马程序员的免费教程。Python基础教程下载【黑马程序员完整版】
-
首先需要两个准备,第一个准备是在计算机上安装VMware虚拟机软件,下载地址:VMware官网,正常安装即可;
-
第二个准备是在Ubantu官网下载Ubantu。安装完成时遇到两个问题,<1>配置完成后启动虚拟机,显示“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。”解决方案参照【此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。(如何进入系统BIOS设定)】。<2>虚拟机无法联网,解决方案参照【虚拟机(Ubantu)无法联网】。
-
具体安装按窗口提示即可,以下是相关的设置。
语言环境 | 依次点击Settings>>Region&Language>>Manage Installed Languages>>Install/Remove Languages…>>勾选Chinese(simplified)>>Language选择或者拖动为Chinese>>Restart… |
设置服务器镜像源(提高软件安装/更新速度) | 系统设置>>关于>>软件更新>>下载自>>其他站点>>选择最佳服务器(S)>>选择服务器(S) |
启动栏添加终端图标 | 找到后右键选择添加到收藏夹 |
使用apt更新和升级系统软件 | 1.sudo apt install 软件名 //安装软件 2.sudo apt remove 软件名//卸载软件 3.sudo apt update/upgrade//可软件软件列表/更新已安装的软件 |
安装常用工具 | 1.Python程序员:$ sudo apt install ipython $ sudo apt install ipython3 $ sudo apt install python-pip $ sudo apt install python3-pip 2.安装ssh服务器:$ sudo apt install openssh-server |
删除软件 | $ sudo apt remove 软件 |
deb安装格式 | $ sudo dpkg -i <package.deb> |
Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
文件和目录命令 | ls,cd,touch,mkdir,rm |
拷贝和移动命令 | tree,cp,mv |
文件内容命令 | cat,more,grep |
远程管理命令 | ifconfig,ping,SSH的工作方式简介以及ssh命令 |
用户权限及用户管理命令 | chmod,chgrp,useradd,passwd,userdel |
软件安装及压缩命令 | apt简介及命令,tar,gzip压缩命令,bzip2压缩命令 |
vim的基本使用 |
-r | 源文件为目录文件,scp将递归复制目录下的所有子目录和文件 |
-P | 若远程SSH服务器的端口不是22,需要使用大写字母-P选项指定端口 |
- 对文件/目录的的权限包括:
01 | 读 | read | r | 4 |
02 | 写 | write | w | 2 |
03 | 执行 | excute | x | 1 |
- 预先对组设置好权限,再将对应的用户添加进去,从而依次为每一个用户设置权限。 ls -l显示的文件详细信:目录-拥有者权限-组权限-其他用户权限-硬链接数-拥有者-组-大小-时间-文件或目录名称。其中硬链接数表示有多少种方式可以访问到当前目录/文件。
- chmod修改用户/组对文件/目录的权限。
- 超级用户 Linux系统中的root账号用于系统的维护和管理,对操作细听的所有资源具有所有访问权限。
- 组管理终端命令 创建/删除组的终端命令都需要sudo执行。
01 | groupadd 组名 | 添加组 |
02 | groupdel 组名 | 删除组 |
03 | cat /etc/group | 确认组信(配置文件) |
04 | chgrp 组名 文件/目录名 | 递归修改文件/目录的所属组 |
01 | useradd -m -g 组 新建用户名 | 创建用户 | -m:自动建立用户家目录;-g:指定用户所在组,否则会建立与用户同名的组 |
02 | passwd 用户名 | 设置密码 | 普通用户可直接使用修改自己的账户密码 |
03 | userdel -r 用户名 | 删除用户 | -r选项会自动删除用户家目录 |
04 | cat /etc/passwd | grep 用户名 | 确认用户信 | 新建的用户信存储在/etc/passwd文件中 |
- 查看用户信
01 | id [用户名] | 查看用户UID和GID信 |
02 | who | 查看当前所有登录的用户列表 |
03 | whoami | 查看当前登录用户的账户名 |
- passwd文件 /etc/passwd文件存放的是用户的信,由六个分号组成的7个信,分别是 用户名;密码(x表示已加密);UID(用户标识);GID(组标识);用户全名或者本地账号;家目录;登录使用的Shell(登陆之后使用的终端命令,Ubantu默认是dash)
- usermod usermod可以用以设置用户的主组/附加组合登录Shell。 主组:在新建用户的时候指定,在/etc/passwd的第四列GID对应的组。 附加组:在/etc/group中最后一列表示该组的用户列表,用于指定用户的附加权限。
01 | su - 用户名 | 切换用户并切换目录 | -可以切换到用户家目录,否则保持位置不变 |
02 | exit | 退出当前登录用户 |
- su不接用户名,可以切换到root,但是不推荐使用,因为不安全。
- exit示意图如下:
01 | chown | 修改拥有者 |
02 | chgrp | 修改组 |
03 | chmod | 修改权限 |
- 命令格式
- 文件权限用二进制表示
r ;w;x | r;w;x | r;w;x |
4;2;1 | 4;2;1 | 4;2;1 |
01 | date | 查看系统时间 |
02 | cal | calendar查看日历,-y选项显示一年的日历 |
03 | df -h | disk free显示磁盘剩余空间 |
04 | du -h [目录名] | disk usage显示目录下的文件大小 |
05 | ps aux | process status查看进程的详细情况 (选项含义在下个表格中介绍) |
06 | top | 动态显示运行中的进程并排序 ,输入q退出top |
07 | kill [-9] 进程代号 | 终止指定代号(PID)的进程,-9表示强行终止 |
08 | find [路径] -name “*.py” | 查找指定路径下所有扩展名为-py的文件 |
09 | ln -s 被链接的源文件 链接文件 | 建立文件的软链接(快捷方式) —注意不带-s选项建立的是硬链接,会很占空间;源文件要用绝对路径 |
- -h选项的作用:更人性化地显示信(计量单位)
- ps选项说明
a | 显示终端所有进程(包括其他用户) |
u | 显示进程的详细状态 |
x | 显示没有控制终端的进程 |
01 | tar(打包) | 1打包文件 tar -cvf 打包文件.tar 被打包的文件/路径...;2解包文件tar -xvf 打包文件.tar |
02 | gzip(压缩) | 1压缩文件 tar -zcvf 打包文件.tar.gz 被打包的文件/路径...;2解压缩文件tar -zxvf 打包文件.tar.gz ;3解压缩到指定路径tar -zxvf 打包文件.tar.gz -C 目标路径 |
03 | bzip2 | 1压缩文件 tar -jcvf 打包文件.tar.bz2 被打包的文件/路径...;2解压缩文件tar -jxvf 打包文件.tar.bz2 ; 3解压缩到指定路径tar -jxvf 打包文件.tar.bz2 -C 目标路径 |
04 | apt | 1安装软件sudo apt install 软件包 ;2卸载软件sudo apt remove 软件名;3更新已安装的包sudo apt upgrate |
- tar选项说明
c | 生成档案文件,创建打包文件 |
x | 解开档案文件 |
v | 列出归档归档解档的详细过程,显示进度 |
f | 指定档案文件名称,f后面一定是.tar 文件,所以必须放在选项最后 |
- apt
- 软件源参考前面1.1虚拟机安装与设置
- 编译器:将其他语言翻译成机器语言的工具。
- 当编译器以解释方式运行的时候,也称为解释器。
- 编译型语言(C、C++)执行速度快,但跨平台性差。
- 解释性语言(Java、Python等)跨平台性好,执行速度稍逊。
- 完全面向对象
- 拥有一个强大的标准库
- Python社区提供了大量的第三方模块
- 解释器—python/python3
- 交互式—ipython/ipython3
- 集成开发环境(IDE)—PyCharm
- print函数的作用,类似于C++中的cout
- 安装PyCharm(Linux系统下)
- 卸载PyCharm(Linux系统下)
- 命名文件名建议使用小写字母、数字和下划线
- 文件名不能以数字开始
- 通过欢迎界面或者菜单File>>New Project可以新建项目
- 命名规则,摘自Python风格指南(Google)。
模块名写法: module_name ; 包名写法: package_name ; 类名: ClassName ; 方法名:method_name ; 异常名: ExceptionName ; 函数名: function_name ; 全局常量名:GLOBAL_CONSTANT_NAME ; 全局变量名: global_var_name ; 实例名:instance_var_name ; 函数参数名: function_parameter_name ; 局部变量名: local_var_name . 函数名,变量名和文件名应该是描述性的,尽量避免缩写,特别要避免使用非项目人员不清楚难以理解的缩写,不要通过删除单词中的字母来进行缩写。始终使用.py 作为文件后缀名,不要用破折号。
1.3.6多文件项目的演练- 开发项目就是开发一个专门解决一个复杂业务功能的软件
- 通常每个项目就具有一个独立专属的目录,用于保存所有和项目相关的文件
- 一个项目通常含有很多源文件
- 算数运算符+,-,*,/,//,%,**。
- 其中*还可以计算出字符串重复指定次数的结果。
- 优先级同C++(由高到低排列)
** | 幂(最高优先级) |
* / % // | 乘、除、取余数、取整数 |
+ - | 加法、减法 |
与C++类似:==,!=,>,<,>=,<=
2.3逻辑运算符- and
- or
- not
=,+=,-=,*=,/=,//=,%=,**=
2.5数据类型- 数据类型:数字型与非数字型
- 数字型:整型(int)、浮点型(float)、布尔型(bool)、复数型(complex)
- 非数字型:字符串、列表、元组、字典
- 在Python中,所有非数字型变量都支持一下特点 1.都是一个序列sequence,也可以理解为容器 2.取值[] 3.遍历for in 4.计算长度、最大/最小值、比较、删除 5.链接+和重复* 6.切片
- <1>列表是Python中使用最频繁的数据类型,在C++中可类比为数组 应用场景:列表一般都存储相同类型的数据;通过迭代遍历,在循环体内部针对列表元素执行相同操作
01 | 增加 | 列表.insert(索引,数据) | 在指定位置插入数据 |
列表.append(数据) | 在末尾追加数据 | ||
列表.extend(列表2) | 将列表2的数据追加到列表 | ||
02 | 修改 | 列表[索引] = 数据 | 修改指定索引的数据 |
03 | 删除 | del 列表[索引] | 删除指定索引的数据 |
列表.remove[数据] | 删除第一个出现的指定数据 | ||
列表.pop | 删除末尾数据 | ||
列表.pop(索引) | 删除指定索引数据 | ||
列表.clear | 清空列表 | ||
04 | 统计 | len(列表) | 列表长度 |
列表.count(数据) | 数据在列表中出现的次数 | ||
05 | 排序 | 列表.sort() | 升序 |
列表.sort(reverse=True) | 降序 | ||
列表.reverse() | 逆序、反转 |
- <2>元组(Tuple)与列表类似,但是元组的元素不能修改,且用()定义
- <3>字典(dictionary)是无序的对象集合,用{}定义,与C++中的结构体有异曲同工之妙 键key是索引,只能使用字符串、数字或元组; 值value是数据,可以取任何数据; ==len(字典)==获取字典的键值对数量。
\\ | 反斜杠 |
’ | 单引号 |
" | 双引号 |
\\n | 换行 |
\\t | 横向制表符,垂直方向对齐 |
\\r | 回车 |
- 注意:在Python开发中,Tab和空格不要混用!代码的缩进建议使用4个空格。
三大流程方式:顺序、分支、循环
4.1while循环 # while 循环 i = 0 # 计数器(程序计数法常从零开始) while i < 5: # 条件 print("Hello Python") i += 14.2完整的for循环语法 for 变量 in 集合: 循环体代码 else: 没有通过 break 退出循环,循环结束后,会执行的代码 4.3break和continue
- break某一条件满足时,退出循环,不再执行后续重复的代码。
- continue某一条件满足时,不执行后续重复的代码,使用的时候注意计数器是否变化,以避免出现死循环。
break和continue只对当前所在循环有效
五、函数基础 5.1定义函数的格式如下: # 这里下方要空两行 def 函数名(): """函数说明""" # 在调用出 CtroL + Q 可以查询函数说明 函数封装的代码 ...... def sum_2_sum(num1, num2): # num1、num2为形参 """俩数求和""" return num1 + num2 # 返回值 result = sum_2_sum(10, 40) # 此处10与40为实参 print("输出结果为%d" % result) 5.2使用模块中的函数模块是Python程序架构的一个核心概念
- pyc文件是由Python解释器将模块的源码转换为字节码,作为一种启动速度的优化
补充:
- 变量的格式化输出(包含%的字符串被称为格式化字符串)
%s | 字符串 |
%d | 有符号十进制整数, %06d表示输出的整数显示位数,不足的用0补全 |
%f | 浮点数, %.2f表示小数点后保留位数 |
%% | 输出% |
Python包含了一下内置函数:
len(item) | 计算容器中元素个数 | |
del(item) | 删除变量 | del有两种方式 |
max(item) | 返回容器中元素最大值 | 字典只比较key |
min(item) | 返回容器中元素最小值 | 字典只比较key |
cmp(item1, item2) | 比较两个值,-1 小于/0 相等/1 大于 | Python3.x取消了该函数 |
切片 | “0123456789” [::-2] | “97531” | 字符串、列表、元组 |
+ | [1, 2] + [3, 4] | [1, 2, 3, 4] | 合并 | 字符串、列表、元组 |
* | [“Hi”] * 4 | [“Hi”, “Hi”, “Hi”, “Hi”] | 重复 | 字符串、列表、元组 |
in | 3 in (1, 2, 3) | True | 元素是否存在 | 字符串、列表、元组、字典 |
not in | 4 not in (1, 2, 3) | True | 元素是否不存在 | 字符串、列表、元组 、字典 |
> >= == < <= | (1, 2, 3) < (2, 2, 3) | True | 元素比较 | 字符串、列表、元组 |
局部变量和全局变量
- 局部变量,就是在函数内部定义的变量。当函数调用时,局部变量被创建,当函数调用完成后这个变量立即销毁。
- 在函数外边定义的变量叫做全局变量,全局变量能够在所有的函数中进行访问。
一般在实际开发过程中,一个程序往往由多个函数(后面知识中会讲解类)组成,并且多个函数共享某些数据,这种场景是经常出现的,因此下面来总结下,多个函数中共享数据的几种方式。
- 如果return后面有多个数据,那么默认是元组
- return后面可以是元组,列表、字典等,只要是能够存储多个数据的类型,就可以一次性返回多个数
- 函数调用,通过“键=值”的形式加以指定,清除了关键字参数的顺序要求。
- 调用函数时,缺省参数的值如果没有传入,则取默认值。
- 注意:带有默认值的参数一定要位于参数列表的最后面
-
加了星号 * 的变量args会存放所有未命名的变量参数,args为元组
-
而加 ** 的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典.
-
注意:如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到 *args的后面, 但如果有**kwargs的话,**kwargs必须是最后的
- 拆包元组
- 拆包字典
- 交换变量值
-
在python中,值是靠引用来传递来的。
-
我们可以用id()来判断两个变量是否为同一个值的引用。 我们可以将id值理解为那块内存的地址标示。
- 所谓可变类型与不可变类型是指:数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变。
- 可变类型有: 列表、字典、集合。
- 不可变类型有: 数字、字符串、元组。
- 应用场景
- 递归的特点 (☆☆☆☆☆) – 函数内部自己调用自己 – 必须有出口
- 函数可以做为参数传递给另外一个函数, 可以使得函数的实现更加通用
- 匿名函数也可以作为参数传递给另外一个函数, 对于只需要用到一次函数, 可以通过匿名函数减少代码量
- 使用匿名函数进行列表内字典排序
- 把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。函数式编程就是指着种高度抽象的编程范式,减少了代码的重复,开发速度较快。
- map(func, lst),将传入的func作用到lst变量的每个元素中,并将结果组成新的列表(Python2)或者“迭代器(Python3)”返回。
- reduce(func, lst),其中func必须有两个参数。每次 func计算的结果继续和序列的下一个元素做累积计算(个人理解:即将lst中的所有数字都做了func计算)。
注意:reduce()传入的参数func必须接收2个参数。
# 计算列表中各个数字的累加和。 import functools def func1(x, y): return x + y num_list1 = [1, 2, 3, 4, 5] result1 = functools.reduce(func1, num_list1) print(result1) 10.2.3filter()- filter(func, lst)函数用铝过滤序列,过滤掉不符合条件的元素,返回一个filter对象。可以用list()转为列表。
- 就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。
- name:是要打开的目标文件名的字符串(可包含文件所在具体路径)
- mode:设置打开文件的访问模式:只读、写入、追加等等
- read()
- readlines() 该方法下读取文件所有内容,返回一个列表,每一行的数据作为一个元素。
- readline()一次读取一行内容
注意:读的内容永远在指针之后。譬如,在’a+'模式下直接读取内容,是空白文件。
11.2.3seek()用以移动文件指针 文件对象.seek(偏移量, 起始位置)起始位置:
- 0:文件开头
- 1:当前位置
- 2:文件结尾
需求:输入文件的名字,然后程序自动完成对文件进行备份
步骤:1.接收用户输入的文件名;2.规划备份文件名;3.备份文件写入数据
old_filename = input("请输入您要备份的文件名:") index = old_filename.rfind('.') print(old_filename[:index]) print(old_filename[index:]) if index > 0: # 有效文件才备份 new_filename = old_filename[:index] + \\ "[备份]" + old_filename[index:] # file = open(old_filename, 'a') # 假设刚好是备份这个文件 # file.close() print(new_filename) old_file = open(old_filename, 'rb') new_file = open(new_filename, 'wb') while True: live_con = old_file.read(1024) if len(live_con) != 0: new_file.write(live_con) else: break old_file.close() new_file.close() 11.4文件和文件夹的操作- 在Python中文件和文件夹的操作要借助os模块里面的相关功能,步骤如下:
- 添加字符串
- 删除字符串
该阶段正式进入Python这门语言的学习,首先通过了解Python语言的起源,Python语言的设计目标,Python语言的设计哲学,Python语言的优缺点和面向对象的基本概念,以及Python语言的执行方式,还有Python集成开发环境PyCharm的使用为我们接下来的学习做铺垫。
然后会学习int,string,float三种简单的变量类型,变量间的计算,变量的输入输出,if判断语句,while循环语句,for循环语句,break和continue的使用,函数的基本使用,模块的使用,列表,元组,字典三种高级变量,字符串的常用操作。
接下来会通过一个名片管理系统的案例,把这一阶段的知识进行一个串联。在学习名片管理系统时,首先我们会学习怎么去搭建这一系统的框架,然后我们会分别实现新增名片,显示全部名片,查询名片,删除名片,修改名片这些功能。
最后会学习语法的进阶内容,全局变量,局部变量,可变数据类型和不可变数据类型以及函数返回多个值,函数的缺省参数,多值参数,递归的基本使用。
写代码一定要注意Tab缩进与空格不要混用!
版权声明:本文标题:Python学习日记(初级篇01基础语法)——黑马程序员视频学习笔记 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686514248a76199.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论