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->点击左侧的…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
