Python 基础入门
——雁丘
Python解释器Pycharm的安装部署
- 关于本专栏
- 一 Python简介
- 1.1 Python优点
- 1.2 支持的编程方式
- 1.3 版本兼容问题
- 1.4 Python的开发环境
- 1.4.1 常用的 Python 编辑器
- 1.4.2 常用的 Python IDE
- 1.4.3 Python IDLE
- 1.4.4 第三方库安装
- 1.5 Python 的运行方式
- 1.5.1 Shell 交互方式
- 1.5.2 文件执行方式
- 二 Python 基础语法
- 2.1 Python 的基本构成
- 2.2 变量
- 2.2.1 对象的属性
- 2.2.3 变量名的命名规则
- 2.2.4 变量的使用
- 2.2.4 对象的管理
- 2.3 Python 的语句风格
- 2.3.1 行与缩进
- 2.3.2 赋值
- 2.4 注释
- 三 Python 数据类型基础
- 3.1 数据类型总表
- 3.2 非二进制数的表示
- 3.3 数字类型Number
- 3.3.1 整型(int)
- 3.3.2 布尔型(bool)
- 3.3.3 浮点型(float)
- 3.3.4 复数型(complex)
- 3.4 序列(Array)
- 3.4.1 字符串(String)
- 3.4.2 列表(List)
- 3.4.3 元组(Tuple)
- 3.4.4 对象(Range)
- 3.5 映射(Mapping)/字典(Dictionary)
- 3.6 数据类型转换
关于本专栏
关于Python
安装与环境变量配置请查看本专栏文章Python安装与环境变量配置傻瓜式教程(2023年9月)
关于Pycharm
的安装部署和基本使用请查看本专栏文章Python解释器和Pycharm的傻瓜式安装部署
一 Python简介
1.1 Python优点
适用面广、简单易学、开发效率高
1.2 支持的编程方式
支持面向对象、面向函数、函数式编程等多种编程方式,同时还是一种胶水语言,很容易与其他主流设计语言混合编程
1.3 版本兼容问题
- Python3不兼容Python2,因为有重要的修正。比如Python3中
3/4=0.75
而不是0,所有的字符串都是Unicode字符串等 - Python 3.9+版本不能在Windows 7或更早版本上使用。
1.4 Python的开发环境
Python 开发环境通常包括两类:Python 编辑器和集成开发环境(integrated development environment.IDE)
1.4.1 常用的 Python 编辑器
常用的 Python 编辑器有 Sublime Text
和 Visual Studio Code
等,它们首先需要安装好基本的 Python 运行环境,一般都具有自动补全和智能提示等编辑和调试功能。
小巧,定制方便,但功能相对简单。
1.4.2 常用的 Python IDE
Python IDE 如 PyCharm
和Anaconda
等则功能更丰富,不仅包含基本的 Python 运行环境和编辑器,一般还具有项目管理和版本控制等功能,通常还预装了某些扩展库、文档和教程,可省去安装模块和寻找使用帮助的麻烦。
Anaconda
集成了大量流行的科学计算和数据分析第三方库,推荐新手和专供数据处理的人使用
1.4.3 Python IDLE
IDLE是 Python 官方内置的一个简单小巧的 IDE。它包含了编辑器、交互式命令行和调试器等基本组件,可以应付大多数 Python 的简单应用开发。在 Python 官网提供了多个操作系统下的IDLE 安装包。
1.4.4 第三方库安装
可以在 PyPI 页面上搜索和安装、发布 Python 第三方库(模块)
安装其中的第三方库官方推荐使用Python 库管理工具 pip
,只要将第三方库下载到本地然后进行安装即可。
举例
安装安卓自动测试库atx
,步骤为:
- Python 官网下载文件 get-pip.py(目前 Python IDE 中一般都预装了 pip,不需要另外载和安装,直接使用第3步安装即可)
- 在命令提示符方式下运行如下命令安装 pip。
python get-pip. py
3 使用 pip 安装 atx 第三方库。
pip install atx
1.5 Python 的运行方式
无论哪种方式,实质上都是解释执行,代码较短或较多交互操作优先 Shell 交互方式 ;代码较长优先文件执行方式
1.5.1 Shell 交互方式
每输入一条命令就执行,常见于命令提示符和 Python 编辑器
1.5.2 文件执行方式
创建一个扩展名为.py
的文件,每次保存后整体运行
二 Python 基础语法
2.1 Python 的基本构成
变量、表达式和语句是 Python 程序的基本要素
2.2 变量
Python 中的变量(variable)是用来标识对象或引用对象的。Python 作为一种面向对象的编程语言,它的实例、函数、方法、类都是对象。
2.2.1 对象的属性
所有的 Python 对象都拥有三个属性,即身份、类型和值。
- 对象有唯一的身份用于标识自己,可以使用内建函数
id(指向对象的变量)
来得到这个身份标识。 - 类型决定了该对象可以保存什么类型的值和进行怎样的操作等,可以用内建函数
type()
查看Python 对象的类型。
2.2.3 变量名的命名规则
Python 中变量名的命名规则也与大多数程序设计语言一样遵循标识符命名规则:
- 首字符必须字母或下划线
- 其余字符可以是字母、下划线或是数字
- 区分大小写
2.2.4 变量的使用
Python 无需声明变量的类型,在第一次赋值由值自动确定变量的类型
2.2.4 对象的管理
对于内存中的对象 Python 会采用一种称为“引用计数”的方式进行管理
当对象被赋给某个变量时,该变量计数器+1
当计数器为0时,该对象的内存空间被回收
a = 1.2 ; b = 1.2 # 此时a ,b 的id不同
a = 1.2 ; b = a # 此时a ,b 的id相同
但注意,对于小整数[ -5 , 256 ]和仅包含数字、字母和下划线的常量字符串 Python 会缓存和重用,即上述两种情况id均相同
一个函数内部相同的不可变对象id也相同
2.3 Python 的语句风格
2.3.1 行与缩进
- 语句出现缩进表示语句块的开始,退出缩进表示语句块的结束
for number in numprog = prog * number
print ('the prog is:',prog)
- Python 可以把多个语句写在一行,但需要用分号
;
隔开,或者换行 - 一行长语句可以换行写,但需加上续行符
\
- 小括号、中括号、花括号、三引号内部可以多行书写且无需续行符
2.3.2 赋值
1.+
、-
、*
、/
常规赋值
2. +=
、-=
、*=
、/=
、%=
、**=
、<<=
、>>=
、&=
、^=
、|=
增量赋值
m /= 5 # 相当 m = m / 5
- 支持链式赋值
b = a = a + 1 # 相当 a = a + 1 ,b = a
- 支持多重复制
a , b =1 , 2
( a , b ) = ( 1 , 2 )
2.4 注释
# 单行注释'''
这是多行注释
'''
- #号和注释内容一般建议以一个空格隔开,一般用于单行代码的注释
- 单行注释可以嵌套一行的多行注释
- 多行注释可以嵌套单行注释
# ''' 多行注释''''''
# 单行注释
'''
三 Python 数据类型基础
变量没有类型,数据才有类型
如何查看数据类型,通过内置函数type()
type(变量名或数据)
3.1 数据类型总表
Python 数据类型 | |||
---|---|---|---|
类型 | 描述 | 举例 | |
数字Number | 整型(Int) | 10,-10 | |
浮点型(Float) | 3.14159,-3.14159 | ||
复数型(Complex) | 5j,(6+3j) | ||
布尔型(Bool) | True,False | ||
序列Array | 字符串String | 用以存储文本 | 'yanqiu'、"ayu"、'''ahao''' |
列表List | 有序的可变序列 | [ 1 , 'yanqiu' , 4 ] | |
元组Tuple | 有序的不可变数列 | ( 1 , 'yanqiu' , 4 ) | |
对象Range | 有规律的整数数列 | range(1,11) | |
集合Set | 无序的不重复集合 | set_a = {'apple', 'banana', 'cherry'} | |
映射Mapping | 字典Dictionary | 无序Key-Value集合 | favorite_language = { 'jen': 'python', 'phil': 'python'} |
3.2 非二进制数的表示
非二进制数的表示 | |
---|---|
进制 | 举例 |
二进制 | 0b10 |
八进制 | 0b10 |
十六进制 | 0x10 |
3.3 数字类型Number
3.3.1 整型(int)
>>> a=3
>>>type(a)
<class'int'>
>>>type(-8)
<class'int'>
在 Python3之后,不再严格区分
int
和long
(长整型)
3.3.2 布尔型(bool)
>>> a=True
>>>type(a)
<class'bool'>
>>>int(a)
1
>>>int(False)
0
bool
实质是用0、1存储的,True对应1,False对应0,可以用内置函数int()
返回布尔型变量的整型值
元素除了是 0、空、False、None外 都算 True;
3.3.3 浮点型(float)
>>> 3.22
3.22
>>>9.8e3
9800
>>> type(-0.48e-2)
<class'float'>
3.3.4 复数型(complex)
>>> 3+5j
(3+5j)
>>>4j
4j
>>> type(3+5j)
<class'complex'>
特别地,为了保证数是虚数,
0j
前的0不能省略
3.4 序列(Array)
这里仅简单介绍,详细的使用方法参见本系列下篇
3.4.1 字符串(String)
字符串(string)用引号引起来的字符集合。字符串创建后不可变,在 Python 中可以使用单引号、双引号、三引号表示字符串。例如:
>>> myStringl = 'Hello, World!'
>>> myString2 = "Hello, World!"
>>>> myString3 = '''Hello, World! ''' #用 print()函数输出这 3个字符串变量的结果都是
"Hello,World!"
"Hello,World!"
"Hello,World!"
单个元素通过索引来访问,索引值从0开始
多个字符通过切片操作来访问。
>>> myStringl[ 0]
'H'
3.4.2 列表(List)
列表是 Python 中有特色的经典数据类型。列表与字符串一样也是序列类型,但是列表是可变的容器。
与传统的数组相比,列表可以存储不同类型的数据对象
列表也同样支持索引和切片操作。
>>> aList = [ 1, 'Maths ', 88]
>>> aList
[1,'Maths',88]
>>> aList[2] = 90 # 改变了索引值为2的元素的值
>>>> aList
[1, ' Maths ',90]
3.4.3 元组(Tuple)
元组和列表有很多相似的地方,它们都可以存储不同类型的数据对象,都支持索引和切片操作等。但元组是不可变的。
>>> aTuple = (1,'Maths',88)
>>> aTuple
(1,'Maths',88)
>>> aTuple[2] = 90 # 在元组中试图改变元素值会报错Traceback ( most recent call last) :File " <pyshell#1>" , line 1, in <module>aTuple[2] = 90TypeError: 'tuple' object does not support item assignmen
3.4.4 对象(Range)
Python 中使用range()
函数生成一个不可变的 range 对象,一个有规律的整数序列。例如
>>> list( range( 1, 11) )
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
range()
函数常常用在 for 循环中
3.5 映射(Mapping)/字典(Dictionary)
字典是 Python 中唯一的一种映射类型。字典中每一个元素都由一个键和一个值构成的键值对组成。
使用不可变对象作为键,常见的是使用字符串作为键去索引一个值
>>> aDict = {'sine ': ' sin ', ' cosine ': ' cos ', ' PI': 3. 14159}
字典通过键来访问值
>>> aDict[' sine ']
'sin '
# 通过键'sine'得到值'sin'。
3.6 数据类型转换
数据类型之间,在特定的场景下,是可以相互转换的,如字符串转数字、数字转字符串等,由于 Python 是一种强类型的语言,所以在运算中变量类型不能自动转换
- 格式:语句(函数)
int(x) # 将x转换为一个整数
float(x) # 将x转换为一个浮点数
str(x) # 将x转换为字符串
- 浮点数转整数丢失小数部分
相关文章:
Python 基础入门
给我家憨憨写的python教程 ——雁丘 Python解释器Pycharm的安装部署 关于本专栏一 Python简介1.1 Python优点1.2 支持的编程方式1.3 版本兼容问题1.4 Python的开发环境1.4.1 常用的 Python 编辑器1.4.2 常用的 Python IDE1.4.3 Python IDLE1.4.4 第三方库安装 1.5 Python 的运…...
【跟小嘉学 Rust 编程】二十九、Rust 中的零拷贝序列化解决方案(rkyv)
系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...
路由器端口转发
什么是路由器端口转发 路由器端口转发是一种网络配置技术,用于将公共网络(如互联网)上的请求转发到私有网络中的特定设备或服务。它允许外部设备通过路由器访问内部网络中的设备或服务,实现网络上的通信和互动。 路由器端口转发…...
Redis模块一:缓存简介
目录 缓存的定义 应用 生活案例 程序中的缓存 缓存优点 缓存的定义 缓存是⼀个高速数据交换的存储器,使用它可以快速的访问和操作数据。 应用 1.CPU缓存:CPU缓存是位于CPU和内存之间的临时存储器,它的容量通常远小于内存࿰…...
【去除若依首页】有些小项目不需要首页,去除方法
第一步 // // // // // // // // // // // // // // // // // // 修改登录页 Login.vue 中 大概144行 ,注释掉原有跳转。替换为自己的跳转路径 // // // // // // // // // // // // // this.$router.push({ path: this.redirect || …...
Ardupilot — EKF3使用光流室内定位代码梳理
文章目录 前言 1 Copter.cpp 1.1 void IRAM_ATTR Copter::fast_loop() 1.2 void Copter::read_AHRS(void) 1.3 对象ahrs说明 2 AP_AHRS_NavEKF.cpp 2.1 void AP_AHRS_NavEKF::update(bool skip_ins_update) 2.2 void AP_AHRS_NavEKF::update_EKF3(void) 2.3 对象EKF3说…...
【Linux】自动化构建工具 —— make/makefileLinux第一个小程序 - 进度条
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:Linux 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:Linux编译…...
tensorflow的unet模型
import tensorflow as tf from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, Dropout, UpSampling2D, concatenate# 定义 U-Net 模型 def unet(input_size(256, 256, 3)):inputs Input(input_size)# 编码器部分conv1 Conv2D(64, 3, activationrelu, padding…...
(2023 最新版)IntelliJ IDEA 下载安装及配置教程
IntelliJ IDEA下载安装教程(图解) IntelliJ IDEA 简称 IDEA,由 JetBrains 公司开发,是 Java 编程语言开发的集成环境,具有美观,高效等众多特点。在智能代码助手、代码自动提示、重构、J2EE 支持、各类版本…...
react 实现拖动元素
demo使用create-react-app脚手架创建 删除一些文件,创建一些文件后 结构目录如下截图com/index import Movable from ./move import { useMove } from ./move.hook import * as Operations from ./move.opMovable.useMove useMove Movable.Operations Operationse…...
【EI会议】第二届声学,流体力学与工程国际学术会议(AFME 2023)
第二届声学,流体力学与工程国际学术会议 2023 2nd International Conference on Acoustics, Fluid Mechanics and Engineering(AFME 2023) 声学、流体力学两个古老的学科发展至今,无时无刻都在影响着我们的生活。小到日常使用的耳…...
Android StringFog 字符串自动加密
一、StringFog 作用 一款自动对dex/aar/jar文件中的字符串进行加密Android插件工具,正如名字所言,给字符串加上一层雾霭,使人难以窥视其真面目。可以用于增加反编译难度,防止字符串代码重复。 支持java/kotlin。支持app打包生成…...
上四休三,未来的期许
近日“少上一天班,究竟香不香”引发关注,英国媒体2月21日报道,一项全世界目前为止参加人数最多的“四天工作制”试验,不久前在英国取得了成功。很多人表示上过四天班之后,给多少钱也回不去五天班的时代了。 来百度APP畅…...
怎么防止360安全卫士修改默认浏览器?
默认的浏览器 原先选项是360极速浏览器(如果有安装的话),我这里改成了Chrome。 先解锁 才能修改。...
调整参数提高mysql读写速度
要提升MySQL的写入速度,您可以采取一些参数调整和优化措施,这些措施可以根据您的具体应用和环境进行调整。以下是一些常见的参数和优化建议: InnoDB存储引擎: 如果您使用的是InnoDB存储引擎,确保以下参数被设置得合理: innodb_buffer_pool_size:增加内存池大小,以便更多…...
Go expvar包
介绍与使用 expvar 是 exposed variable的简写 expvar包[1]是 Golang 官方为暴露Go应用内部指标数据所提供的标准对外接口,可以辅助获取和调试全局变量。 其通过init函数将内置的expvarHandler(一个标准http HandlerFunc)注册到http包ListenAndServe创建的默认Serve…...
Yolo v8代码逐行解读
train.py文件 1.FILE Path(__file__).resolve() __file__代表的是train.py文件,Path(__file__).resolve()结果是train.py文件的绝对路径。 2.ROOT FILE.parents[0] 获得train.py父目录的绝对路径 3.sys.path 是一个列表list,里面包含了已经添加到系…...
9.18号作业
完善登录框 点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮…...
Spring源码阅读(spring-framework-5.2.24)
spring-aop spring-aspects spring-beans spring-context 等等 第一步: Tags spring-projects/spring-framework GitHub 找到相应的release版本 第二步: 下载相应版本的gardle,如何看版本 spring-framework/gradle/wrapper /gradl…...
【SpringMVC】文件上传与下载、JREBEL使用
目录 一、引言 二、文件的上传 1、单文件上传 1.1、数据表准备 1.2、添加依赖 1.3、配置文件 1.4、编写表单 1.5、编写controller层 2、多文件上传 2.1、编写form表单 2.2、编写controller层 2.3、测试 三、文件下载 四、JREBEL使用 1、下载注册 2、离线设置 一…...
数据结构 第二章作业 线性表 西安石油大学
在顺序表中插入和删除一个结点需平均移动多少个结点?具体的移动次数取决于 哪两个因素? 在顺序表中插入和删除一个结点时,平均移动的结点数量取决于两个因素:插入/删除位置和当前顺序表的长度。 插入/删除位置:如果要…...
vue.mixin全局混合选项
在Vue.js中,Vue.mixin 是一个用来全局混合(mixin)选项的方法。它允许你在多个组件中共享相同的选项,例如数据、方法、生命周期钩子等。这可以用来在组件之间重复使用一些逻辑或共享一些通用的功能 Vue.mixin({// 在这里定义混合的选项data() {return {s…...
VMware Fusion 13+Ubuntu ARM Server 22.04.3在M2芯片的Mac上共享文件夹
因为Server版没有桌面,VMware Tools不能直接装,导致没办法共享文件。 Ubuntu中的包如果需要更新,先执行下面的步骤 sudo apt update 再执行 sudo apt upgrade 不需要更新的话,直接执行下面的步骤 先把open-vm-tools卸载了 …...
PostgreSQL serial类型
serial类型和序列 postgresql序列号(SERIAL)类型包括 smallserial(smallint,short),serial(int)bigserial(bigint,long long int) 不管是smallserial,serial还是bigserial,其范围都是(1,9223372036854775807)&#…...
[创业之路-76] - 创业公司如何在长期坚持中顺势而为?诚迈科技参观交流有感
目录 一、创业环境 1.1. VUCA乌卡时代:易变、复杂、不确定性、模糊的时代 1.2. 中国用了四十年的时间完成了三次工业革命:机械化、电气化、数字化 1.3. 中国正在经历着第四次工业革命:智能化、生态化、拟人化 1.4 国产替代:国…...
人脸修复祛马赛克算法CodeFormer——C++与Python模型部署
一、人脸修复算法 1.算法简介 CodeFormer是一种基于AI技术深度学习的人脸复原模型,由南洋理工大学和商汤科技联合研究中心联合开发,它能够接收模糊或马赛克图像作为输入,并生成更清晰的原始图像。算法源码地址:https://github.c…...
linux入门到精通-第三章-vi(vim)编辑器
目录 文本编辑器gedit介绍vi(vim)命令模式命令模式编辑模式末行模式 帮助教程保存文件切换到编辑模式光标移动(命令模式下)复制粘贴删除撤销恢复保存退出查找替换可视模式替换模式分屏其他用法配置文件 文本编辑器 gedit介绍 gedit是一个GNOME桌面环境下兼容UTF-8的文本编辑器…...
Mybatis面试题(三)
文章目录 前言一、Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?二、当实体类中的属性名和表中的字段名不一样,如果将查询的结果封装到指定 pojo?三、模糊查询 like 语句该怎么写四、…...
Qt扩展-KDDockWidgets 简介及配置
Qt扩展-KDDockWidgets 简介及配置] 一、概述二、编译 KDDockWidgets 库1. Cmake Gui 中选择源文件和编译后的路径2. 点击Config,配置好编译器3. 点击Generate4. 在存放编译的文件夹输入如下命令开始编译 三、qmake 配置 一、概述 kdockwidgets是一个由KDAB组织编写…...
局域网内部如何做网站/网络营销策略方案
2-sat相关复习 noi曾经考过,谁能说得准呢 sat问题 通俗的sat问题表述一般是这样的:有很多个集合,每个集合里面有若干元素,现给出一些取元素的规则,要你判断是否可行,可行则给出一个可行方案。如果所有集合中…...
wordpress用旧的编辑器/seo实战密码电子书
电信物联网开放平台NB-IoT商业项目已投产一、NB-IoT模组硬件设备 BC28模组二、物联平台开发SSH集成电信物联SDK三、微信小程序前端四、NB-IoT商业项目已投产http://www.qchcloud.cn/tn/article/26转载于:https://blog.51cto.com/14042154/2391299...
桓台新城建设有限公司网站/郑州企业网站优化排名
用hbase做数据库,但由于hbase没有类sql查询方式,所以操作和计算数据非常不方便,于是整合hive,让hive支撑在hbase数据库层面 的 hql查询.hive也即 做数据仓库 1. 基于HadoopHive架构对海量数据进行查询:http://blog.csdn.net/kunshan_shenbin/article/details/710531…...
南京当的网站/中国制造网网站类型
计划2015年每天写一篇文章 由于文章编辑器的效率实在太低,所以选择演示文稿导出成图片 部分内容直接使用我在曾经北京航空航天大学开设的《移动终端用户交互工程》的演示文稿,同样效率原因因而直接贴图片 提问请移步 http:/…...
如何上传网站到空间/怎么建立自己的企业网站
树的定义 二叉树 二叉树中的节点最多只能有两个节点,一个左侧节点,一个右侧节点。 二叉搜索树(BST) 二叉搜索树是二叉树的一种,只允许左侧节点小于右侧节点 创建二叉搜索树 function BinarySearchTree(){let Nodefunction(key…...
wordpress后台忘记密码/青岛模板建站
1)用数值进行填充 用平均值、中值、分位数、众数、随机值等替代。简便快速但是效果一般,因为等于人为增加了噪声。 2)用算法拟合进行填充(常用的是随机森林算法) 相对一较为准确。但是有一个根本缺陷,如果其…...