Python语法
文章目录
- 一、Python基础
- 1. 数据类型和变量
- 2. 字符串和编码
- 字符编码
- Python的字符串
- 格式化
- 3. list和tuple
- list
- tuple
- 4.条件判断
- 5. 模式匹配
- 6. 循环
- 7. dict 和 set
- dict
- set
- 二、函数
- 1. 调用函数
- 2. 定义函数
- 3. 函数的参数
- 4. 递归函数
- 三、高级特性
- 四、函数式编程
- 1. 高阶函数
- 2. 返回函数
- 3. 匿名函数
- 4. 装饰器
- 5. 偏函数
- 五、模块
- 模块定义
- 使用模块
- 安装第三方模块
- 安装常用模块
- 模块搜索路径
一、Python基础
1. 数据类型和变量
数据类型:整数、浮点数、字符串、布尔值、空值(None)
变量:变量名必须是大小写英文、数字和_的组合,且不能用数字开头
常量:常量就是不能变的变量,在Python中,通常用全部大写的变量名表示常量
2. 字符串和编码
字符编码
ASCII编码:127位最早
GB2312编码:中文编入
Unicode:统一的一套编码
UTF-8编码:把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。
Python的字符串
Python字符串是以Unicode编码的
Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
在文件开头写上这两行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
格式化
%s
永远起作用,它会把任何数据类型转换为字符串
3. list和tuple
list
list是一种有序的集合,可以随时添加和删除其中的元素。
tuple
元组,tuple和list非常类似,但是tuple一旦初始化就不能修改
4.条件判断
if <条件判断1>:<执行1>
elif <条件判断2>:<执行2>
elif <条件判断3>:<执行3>
else:<执行4>
5. 模式匹配
如果要针对某个变量匹配若干种情况,可以使用match语句
score = 'B'match score:case 'A':print('score is A.')case 'B':print('score is B.')case 'C':print('score is C.')case _: # _表示匹配到其他任何情况print('score is ???.')
6. 循环
for…in循环
names = ['Michael', 'Bob', 'Tracy']
for name in names:print(name)
while循环
sum = 0
n = 99
while n > 0:sum = sum + nn = n - 2
print(sum)
break
在循环中,break语句可以提前退出循环
continue
在循环过程中,也可以通过continue语句,跳过当前的这次循环,直接开始下一次循环。
7. dict 和 set
dict
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
和list比较,dict有以下几个特点:
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。
set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
二、函数
1. 调用函数
Python内置了很多有用的函数,我们可以直接调用。
比如求绝对值的函数abs
>>> abs(100)
100
数据类型转换
Python内置的常用函数还包括数据类型转换函数,比如int()函数可以把其他数据类型转换为整数:
>>> int('123')
123
2. 定义函数
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
def my_abs(x):if x >= 0:return xelse:return -x
参数检查
调用函数时,如果参数个数不对,Python解释器会自动检查出来,并抛出TypeError
:
3. 函数的参数
- 位置参数: 对于power(x)函数,参数x就是一个位置参数
- 默认参数:
def power(x, n=2):s = 1while n > 0:n = n - 1s = s * xreturn s
设置默认参数时,有几点要注意:
一是必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面);
二是如何设置默认参数。
当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
- 可变参数: 传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个
- 关键字参数: 允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
- 命名关键字参数: 如果要限制关键字参数的名字,就可以用命名关键字参数.
例如,只接收city和job作为关键字参数。这种方式定义的函数如下:
def person(name, age, *, city, job):print(name, age, city, job)
- 参数组合:
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
4. 递归函数
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
def fact(n):if n==1:return 1return n * fact(n - 1)
三、高级特性
-
- 切片
L[0:3]
表示,从索引0开始取,直到索引3为止,但不包括索引3
- 切片
-
- 迭代
如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。
- 迭代
-
- 列表生成式
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。
举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):
- 列表生成式
-
- 生成器
在Python中,一边循环一边计算的机制,称为生成器:generator。
- 生成器
-
- 迭代器
可以被next()
函数调用并不断返回下一个值的对象称为迭代器:Iterator
。
- 迭代器
四、函数式编程
1. 高阶函数
- map/reduce
- filter
- sorted 排序
2. 返回函数
- 函数作为返回值
高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 - 闭包
注意到返回的函数在其定义内部引用了局部变量args
,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,所以,闭包用起来简单,实现起来可不容易。 - nonlocal
def inc():x = 0def fn():nonlocal xx = x + 1return xreturn fnf = inc()
print(f()) # 1
print(f()) # 2
x
作为局部变量并没有初始化,直接计算x+1
是不行的。但我们其实是想引用inc()函数内部的x,所以需要在fn()
函数内部加一个nonlocal x
的声明。加上这个声明后,解释器把fn()
的x看作外层函数的局部变量,它已经被初始化了,可以正确计算x+1
。
3. 匿名函数
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。
匿名函数lambda x: x * x
实际上就是:
def f(x):return x * x
关键字lambda
表示匿名函数,冒号前面的x表示函数参数。
4. 装饰器
在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。
5. 偏函数
通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。
functools.partial
就是帮助我们创建一个偏函数的,不需要我们自己定义int2()
,可以直接使用下面的代码创建一个新的函数int2:
>>> import functools
>>> int2 = functools.partial(int, base=2)
>>> int2('1000000')
64
>>> int2('1010101')
85
五、模块
模块定义
在Python中,一个.py文件就称之为一个模块(Module)。
为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。
举个例子,一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块。
现在,假设我们的abc和xyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名,比如mycompany,按照如下目录存放:
mycompany
├─ init.py
├─ abc.py
└─ xyz.py
引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,abc.py
模块的名字就变成了mycompany.abc
,类似的,xyz.py
的模块名变成了mycompany.xyz
。
请注意,每一个包目录下面都会有一个__init__.py
的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py
可以是空文件,也可以有Python代码,因为__init__.py
本身就是一个模块,而它的模块名就是mycompan
。
使用模块
-
- 使用
import xx
导入模块
- 使用
-
- 作用域
- 正常的函数和变量名是公开的(public),可以被直接引用,比如:abc,x123,PI等;
- 类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;
- 类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;
安装第三方模块
在Python中,安装第三方模块,是通过包管理工具pip完成的。
pip install Pillow
安装常用模块
可以从Anaconda官网下载GUI安装包,下载后直接安装,Anaconda会把系统Path中的python指向自己自带的Python,并且,Anaconda安装的第三方模块会安装在Anaconda自己的路径下,不影响系统已安装的Python目录。
模块搜索路径
- 直接修改sys.path,添加要搜索的目录:
>>> import sys
>>> sys.path.append('/Users/michael/my_py_scripts')
这种方法是在运行时修改,运行结束后失效。
- 设置环境变量
PYTHONPATH
,该环境变量的内容会被自动添加到模块搜索路径中。
设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。
参考资料:
廖雪峰官网
相关文章:
Python语法
文章目录 一、Python基础1. 数据类型和变量2. 字符串和编码字符编码Python的字符串格式化 3. list和tuplelisttuple 4.条件判断5. 模式匹配6. 循环7. dict 和 setdictset 二、函数1. 调用函数2. 定义函数3. 函数的参数4. 递归函数 三、高级特性四、函数式编程1. 高阶函数2. 返回…...

电脑经营商城小程序的作用是什么
电脑是企业办公必备的工具,同时很多家庭都有配备,无论笔记本还是台式在各场景中应用都非常广泛,市场各类品牌也很多,区别于以前店内购买,现在不少消费者会选择线上电商平台购买,也因此如今电脑经销商或品牌…...

森海塞尔EW-DP SKP直插式发射机:真正的无失真录制
韦德马克,2023年9月15日 – 10月底,EW-DP系列将再添新品——EW-DP SKP直插式发射机,面向摄像师、广播电视公司和电影制作人。板载32位浮点录制,结合该系列领先的134 dB发射机动态范围,让音频失真不复存在。无论要在现场…...
通过小程序实现会议Oa的会议展示以及个人中心
🏅我是默,一个在CSDN分享笔记的博主。📚📚 🌟在这里,我要推荐给大家我的专栏《微信小程序 》。🎯🎯 🚀无论你是编程小白,还是有一定基础的程序员,…...

STM32驱动GY-39监测环境温度,湿度,大气压强,光强度
目录 模块简介模块测试接线代码测试现象 总结 模块简介 GY-39 是一款低成本,气压,温湿度,光强度传感器模块。工作电压 3-5v,功耗小,安装方便。 其工作原理是,MCU 收集各种传感器数据,统一处理&…...

在华为和比亚迪干了5年测试,月薪25K,熬夜总结出来的划水经验.....
先简单交代一下背景吧,某不知名 985 的本硕,17 年毕业加入华为,之后跳槽到了比亚迪,一直从事软件测试的工作。之前没有实习经历,算是5年的工作经验吧。 这5年之间完成了一次晋升,换了一家公司,…...
Mac 使用 scp 上传或下载文件/文件夹
目录 上传文件到远程服务器 scp 本地文件路径 远程用户名远程IP:远程目标目录上传文件夹到远程服务器 scp -r 本地文件夹 远程用户名远程IP:远程目标目录从远程服务器下载文件 scp 远程用户名远程IP:远程文件路径 本地目标目录从远程服务器下…...

Restful 风格
目录 Restful风格创建springboot项目SpringMVC开发Restful接口1、获取所有的员工思路代码RequestMappingGetMapping 2、获取单个员工思路代码注意: 3、删除员工数据思路:代码单个删除批量删除 4、更新员工数据思路: 5、jQuery发送请求发送del…...

LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测
引言 小伙伴们好,我是《小窗幽记机器学习》的小编:卖热干面的小女孩。 个人CSDN首页:JasonLiu1919_面向对象的程序设计,深度学习,C-CSDN博客 今天开始以2篇小作文介绍代码大语言模型Code Llama。上篇主要介绍Code Llama的基本情况并基于Hug…...

积分球荧光光谱测试光电检测方式有哪些优点?
积分球荧光光谱测试是一种测量光通量的方法,其基本原理是将待测光源放入积分球中,在积分球内壁涂以白色漫反射层,光源发出的光经球壁多次反射后,使整个球壁上的照度均匀分布,再通过球壁上的孔投射到光电探测器上的光通…...

软考考试时间已出!采用连考形式!
2023年下半年计算机技术与软件专业技术资格(水平)考试批次安排已出!下面是具体的考试安排。 通知原文如下:↓↓↓ 按照《2023年下半年计算机技术与软件专业技术资格(水平)考试有关工作调整的通告》&#x…...

深入理解强化学习——学习(Learning)、规划(Planning)、探索(Exploration)和利用(Exploitation)
分类目录:《深入理解强化学习》总目录 学习 学习(Learning)和规划(Planning)是序列决策的两个基本问题。 如下图所示,在强化学习中,环境初始时是未知的,智能体不知道环境如何工作&a…...
大模型LLM相关面试题整理-训练集-训练经验-微调
3 大模型(LLMs)微调 3.1 如果想要在某个模型基础上做全参数微调,究竟需要多少显存? 要确定全参数微调所需的显存量,需要考虑以下几个因素: 模型的大小:模型的大小是指模型参数的数量。通常&…...

qt 实现pdf阅读器
文章目录 概要方案一方案二一、介绍二、编译三、用法本项目代码 概要 在qt程序中,要实现PDF文件浏览,从网上目前找到了两种解决方案,本文主要介绍下着两种方案和适用性。 方案一 这种方法是从https://github.com/develtar/qt-pdf-viewer-l…...

从培训班出来之后找工作的经历,教会了我五件事.....
我是非计算机专业,由于专业不好实习急着就业有过一些失败的工作经历后,跑去参加培训进入IT这行的。 之前在报名学习软件测试之前我也很纠结,不知道怎么选择机构。后面看到有同学在知乎上分享自己的学习经历,当时对我的帮助很大。…...

idea中还原dont ask again
背景 在使用idea打开另外一个项目的时候,一不小心勾选为当前项目而且是不在下次询问,导致后面每次打开新的项目都会把当前项目关闭,如下图所示 下面我们就一起看一下如何把这个询问按钮还原回来 preferences/settings->Appearance&…...

Unity之ShaderGraph如何实现光边溶解
前言 今天我们来实现一个最常见的随机溶剂效果。如下图所示: 光边溶解效果: 无光边效果 主要节点 Simple Noise:根据输入UV生成简单噪声或Value噪声。生成的噪声的大小由输入Scale控制。 Step:对于每个组件,如果输…...

Go语言和Python语言哪个比较好?
目录 1、性能 2、开发效率和易用性 3、社区支持 4、语法 5、其他因素 总结 Go语言和Python语言都是非常优秀的编程语言,它们各自具有不同的优势和适用场景。在选择哪种语言更适合您的项目时,需要考虑多个方面,包括性能、开发效率、可读…...

MAYA教程之模型的UV拆分与材质介绍
什么是UV 模型制作完成后,需要给模型进行贴图,就需要用到UV功能 UV编译器介绍 打开UI编译器 主菜单有一个 UV->UV编译器,可以点击打开 创建一个模型,可以看到模型默认的UV UV编译器功能使用 UV模式的选择 在UV编译器中…...
vscode调试container(进行rocksdb调试)
vscode调试container(进行rocksdb调试) 参考链接: https://blog.csdn.net/qq_29809823/article/details/128445308#t5 https://blog.csdn.net/qq_29809823/article/details/121978762#t7 使用vscode中的插件dev containners->点击左侧的…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...

基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...