当前位置: 首页 > news >正文

Python自学查漏9.28

自学查漏9.28

一、环境安装&代码执行原理&变量命名

安装

Python 代码执行原理

  1. 解析(Parsing):
    • 当你运行一个 Python 脚本时,Python 解释器首先会解析整个代码,将其转换成一种叫做“字节码”(bytecode)的中间形式。
    • 在这个阶段,解释器会检查代码的语法错误。
  2. 编译(Compilation):
    • Python 代码不是直接编译成机器码,而是编译成字节码。字节码是一种低级、平台无关的表示形式。
    • 字节码存储在 .pyc 文件中,这样下次运行同一脚本时,如果源代码没有变化,Python 可以直接加载字节码,从而加快启动速度。
  3. 执行(Execution):
    • Python 的虚拟机(也称为解释器)会逐条执行字节码。
    • 在执行过程中,如果有需要,解释器会调用底层的操作系统或硬件资源。
  4. 垃圾回收(Garbage Collection):
    • Python 还有一个垃圾回收机制,它会自动回收不再使用的内存。

变量命名规则

在 Python 中,变量命名需要遵循以下规则:

  1. 变量名必须以字母(a-z, A-Z)或下划线(_)开头
  2. 变量名不能以数字开头
  3. 变量名只能包含字母、数字和下划线(a-z, A-Z, 0-9, _)
  4. 变量名是大小写敏感的,这意味着 Variablevariable 是两个不同的变量。

以下是一些合法的变量名示例:

variable = 1
Variable = 2
_variable = 3
variable123 = 4

以下是一些不合法的变量名示例:

1variable = 1  # 不能以数字开头
variable-name = 2  # 不能包含破折号(-)

遵循这些规则可以帮助你编写清晰、可读的代码。

二、变量类型&注释&数字类型

变量类型

在 Python 中,变量不需要显式声明类型。Python 是一种动态类型的语言,这意味着解释器会在运行时自动确定变量的类型。以下是 Python 中常见的几种数据类型:

  1. 整数(int): 表示没有小数部分的数字,如 1, -100, 0
  2. 浮点数(float): 表示有小数部分的数字,如 3.14, -0.001, 5.0
  3. 复数(complex): 表示实部和虚部的组合,如 2 + 3j
  4. 字符串(str): 表示文本,可以是单引号 ' '、双引号 " " 或三引号 ''' '''(用于多行字符串)包围的字符序列。
  5. 列表(list): 表示有序的元素集合,元素可以是不同类型,如 [1, 'a', 3.14]
  6. 元组(tuple): 表示不可变的有序元素集合,如 (1, 'a', 3.14)
  7. 集合(set): 表示无序且元素唯一的集合,如 {1, 2, 3}
  8. 字典(dict): 表示键值对的集合,如 {'a': 1, 'b': 2}

注释

注释是代码中不会被解释器执行的文本,用于解释代码或标记某些需要注意的地方。Python 中有两种注释方式:

  1. 单行注释:使用 # 符号开始。例如:

    # 这是一个单行注释
    x = 1  # 这里对变量 x 进行赋值
    
  2. 多行注释:使用三引号 '''""" 包围。例如:

    """
    这是一个多行注释
    可以跨越多行
    """
    

数字类型

Python 中的数字类型主要包括整数、浮点数和复数。

  1. 整数(int):

    • 表示没有小数部分的数。
    • 可以是正数、负数或零。
    • Python 3 中的整数没有大小限制,但实际使用中可能会受到内存大小的限制。
    a = 10  # 整数
    
  2. 浮点数(float):

    • 表示有小数部分的数。
    • 通常用于表示实数。
    • 浮点数通常有固定的精度,通常是 15-17 位小数。
    b = 3.14  # 浮点数
    
  3. 复数(complex):

    • 表示实部和虚部的组合。
    • 虚部以 jJ 作为后缀。
    c = 2 + 3j  # 复数
    

    Python 提供了多种内置函数和方法来处理这些数字类型,例如 int(), float(), complex() 用于类型转换,以及各种数学运算符和函数。

三、数字类型(补充)&字符串

数字类型(补充)

1. 数字类型转换

在 Python 中,你可以使用内置函数进行数字类型的转换:

  • int(x, base=10):将 x 转换为整数。x 可以是数字或字符串。如果 x 是字符串,则 base 指定了进制。
  • float(x):将 x 转换为浮点数。
  • complex(real, imag):创建一个复数,real 是实部,imag 是虚部。 示例:
num_int = int("123")  # 将字符串转换为整数
num_float = float(123)  # 将整数转换为浮点数
num_complex = complex(1, 2)  # 创建一个复数
2. 数字类型的操作

Python 支持多种数字操作,包括算术运算、比较运算、位运算等。

  • 算术运算:+(加)、-(减)、*(乘)、/(除)、//(整除)、%(取余)、**(幂运算)。
  • 比较运算:==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。
  • 位运算:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(右移)。
3. 数字类型的内置函数和方法

Python 提供了许多内置函数来处理数字,例如 abs()(绝对值)、round()(四舍五入)、pow()(幂运算)、divmod()(返回商和余数)等。

字符串

字符串在 Python 中表示为一系列字符,可以是单引号、双引号或三引号内的文本。

1. 字符串字面量

你可以使用单引号、双引号或三引号来创建字符串:

str1 = '单引号字符串'
str2 = "双引号字符串"
str3 = """三引号字符串
可以跨越多行"""
2. 字符串操作

字符串支持以下操作:

  • 索引:访问字符串中的单个字符。
  • 切片:获取字符串的一部分。
  • 连接:使用 + 运算符连接字符串。
  • 重复:使用 * 运算符重复字符串。 示例:
string = "Hello, World!"
print(string[0])  # 输出 'H'
print(string[7:])  # 输出 'World!'
print(string * 2)  # 输出 'Hello, World!Hello, World!'
3. 字符串方法

Python 提供了许多内置方法来处理字符串,以下是一些常用的方法:

  • upper():将字符串中的所有小写字转换成大写。
  • lower():将字符串中的所有大写字转换成小写。
  • capitalize():将字符串的第一个字符转换成大写,其余字符转换成小写。
  • title():将字符串中每个单词的首字母转换成大写。
  • split():将字符串分割成列表。
  • join():将序列中的元素以指定的字符串连接生成一个新的字符串。
  • replace():将字符串中的指定字符替换成其他字符。
  • strip():移除字符串头尾指定的字符(默认为空格)。 示例:
text = "hello, world!"
print(text.upper())  # 输出 'HELLO, WORLD!'
print(text.split())  # 输出 ['hello,', 'world!']
print(' '.join(['Hello', 'World!']))  # 输出 'Hello World!'

四、字符串(补充)&输入输出&条件语句&循环语句&Pass语句

字符串(补充)

1. 字符串格式化

在 Python 中,字符串格式化允许插入变量到字符串中,下面是一些格式化的方法:

  • 使用 % 操作符(老式字符串格式化)。
  • 使用 str.format() 方法。
  • 使用 f-string(Python 3.6+ 特性)。 示例:
name = "Alice"
age = 30
# 使用 % 操作符
print("My name is %s and I am %d years old." % (name, age))
# 使用 str.format() 方法
print("My name is {} and I am {} years old.".format(name, age))
# 使用 f-string
print(f"My name is {name} and I am {age} years old.")
2. 字符串的转义字符

在字符串中,可以使用反斜杠 \ 来插入特殊字符(如换行符 \n 或制表符 \t)。 示例:

print("Hello,\nWorld!")
print("Hello,\tWorld!")
3. 字符串编码和解码

在处理非 ASCII 字符时,需要使用编码和解码功能。 示例:

# 编码
text = "你好,世界!"
encoded_text = text.encode('utf-8')
print(encoded_text)
# 解码
decoded_text = encoded_text.decode('utf-8')
print(decoded_text)

输入输出

1. 输出

使用 print() 函数来输出信息到控制台。 示例:

print("输出内容")
2. 输入

使用 input() 函数来从用户获取输入。 示例:

user_input = input("请输入一些内容:")
print("你输入了:" + user_input)

条件语句

条件语句允许程序根据特定条件执行不同的代码段。

1. if 语句
if condition:# 条件为真时执行的代码
2. if-else 语句
if condition:# 条件为真时执行的代码
else:# 条件为假时执行的代码
3. elif 语句
if condition1:# 条件1为真时执行的代码
elif condition2:# 条件1为假,条件2为真时执行的代码
else:# 所有条件都为假时执行的代码

循环语句

循环语句允许重复执行一段代码。

1. for 循环
for variable in iterable:# 在每次迭代中执行的代码
2. while 循环
while condition:# 当条件为真时重复执行的代码

Pass 语句

pass 语句在 Python 中是一个空操作,它什么都不做,一般用作占位符。 示例:

if condition:pass  # 在这里可以稍后添加代码
else:# 执行其他代码

pass 语句在创建代码框架时很有用,它允许你在不执行任何操作的情况下保持语法正确。

相关文章:

Python自学查漏9.28

自学查漏9.28 一、环境安装&代码执行原理&变量命名 安装 Python 代码执行原理 解析&#xff08;Parsing&#xff09;: 当你运行一个 Python 脚本时&#xff0c;Python 解释器首先会解析整个代码&#xff0c;将其转换成一种叫做“字节码”&#xff08;bytecode&…...

Java文件I/O处理之RandomAccessFile【随意存取文件】

Java语言有一个处理文件输入输出的RandomAccessFile类&#xff0c;既可以读取文件内容&#xff0c;也可以向文件输出数据。 RandomAccessFile类在国内的技术文档和书籍中都翻译为“随机访问文件”类&#xff0c;确实令人不解。 在中文中“随机”的意思&#xff1a; 不设任何条…...

Android页面跳转与返回机制详解

在Android开发中&#xff0c;页面跳转是实现应用功能交互的重要手段之一。本文将从Activity之间的跳转、Activity与Fragment之间的跳转、Fragment之间的跳转以及页面返回的问题四个方面进行详细解析。 一、Activity之间的跳转 Activity是Android应用的基本构建块&#xff0c;…...

Elasticsearch学习笔记(1)

初识 Elasticsearch 认识和安装 Elasticsearch 是由 Elastic 公司开发的一套强大的搜索引擎技术&#xff0c;属于 Elastic 技术栈的一部分。完整的技术栈包括&#xff1a; Elasticsearch&#xff1a;用于数据存储、计算和搜索。Logstash/Beats&#xff1a;用于数据收集。Kib…...

react是一种语言?

React 不是一种编程语言&#xff0c;而是一种用于构建用户界面的 JavaScript 库。它由 Facebook 开发&#xff0c;并广泛用于开发单页应用程序&#xff08;SPA&#xff09;。React 允许你将 UI 拆分成独立的、可复用的组件&#xff0c;这些组件可以接收输入&#xff08;称为“p…...

如何区分这个ip是真实ip,不是虚假的ip

区分一个IP地址是真实IP还是虚假IP&#xff08;伪造IP&#xff09;是非常重要的&#xff0c;特别是在网络安全、数据采集和其他与IP相关的业务场景中。虚假IP&#xff08;也称为伪造IP或假冒IP&#xff09;可以通过多种方式被创建&#xff0c;如代理、VPN、或IP欺骗&#xff08…...

【软件测试】详解软件测试中的测试级别

目录 一、测试级别二、组件测试三、开发者测试3.1测试与调试3.2 组件测试目标3.3 测试功能 四、稳健性测试4.1 效率的测试4.2 测试可维护性4.3 测试策略4.4 白盒测试 一、测试级别 软件系统通常是由许多子系统组成的&#xff0c;而这些子系统又是由多个组件组成的&#xff0c;…...

一条sql在MySQL中是怎么执行的

目录 一、MySQL总体架构二、各层的作用1、连接层2、应用层3、存储引擎层 一、MySQL总体架构 作为常问八股文&#xff0c;相信不少小伙伴当年都被问到过这个问题&#xff0c;回答这个问题我们首先得知道MySQL服务器基本架构&#xff0c;主要分为连接层&#xff0c;应用层和存储…...

Git | Dockerized GitLab 安装使用(简单实操版)

1. 详细步骤 1.1 安装启动 postgresql 服务 docker pull sameersbn/postgresql:14-20230628docker run --name gitlab-postgresql -d \--env DB_NAMEgitlabhq_production \--env DB_USERgitlab --env DB_PASSpassword \--env DB_EXTENSIONpg_trgm,btree_gist \--volume /srv/…...

SpringCloud简介 Ribbon Eureka 远程调用RestTemplate类 openfeign

〇、SpringCloud 0.区别于单体项目和soa架构&#xff0c;微服务架构每个服务独立&#xff0c;灵活。 1. spring cloud是一个完整的微服务框架&#xff0c;springCloud包括三个体系&#xff1a; spring cloud Netflix spring cloud Alibaba spring 其他 2.spring cloud 版本命名…...

微信小程序开发系列之-微信小程序性能优化

微信小程序开发系列之-微信小程序性能优化 性能优化是任何应用开发中的重要组成部分&#xff0c;尤其是在移动环境中。对于微信小程序而言&#xff0c;随着用户量的增加和应用功能的丰富&#xff0c;性能优化显得尤为关键。良好的性能不仅提升用户体验&#xff0c;还能增加用户…...

线程池面试集

目录 线程池中提交一个任务的流程是怎样的? 线程池有五种状态 如何优雅的停止一个线程? 线程池的核心线程数、最大线程数该如何设置? 如何理解Java并发中的可见性、原子性、有序性? Java死锁如何避免? 线程池中提交一个任务的流程是怎样的? 线程池有五种状态 如何优…...

从密码学看盲拍合约:智能合约的隐私与安全新革命!

文章目录 前言一、什么是盲拍合约&#xff1f;二、盲拍合约的优势1.时间压力的缓解2.绑定与秘密的挑战 三、盲拍合约的工作原理1.提交盲出价2.披露出价3.结束拍卖4.退款机制 四、代码示例总结 前言 随着区块链技术的发展&#xff0c;智能合约在各种场景中的应用越来越广泛。盲…...

c++学习笔记(47)

七、_public.cpp #include "_public.h" // 如果信号量已存在&#xff0c;获取信号量&#xff1b;如果信号量不存在&#xff0c;则创建它并初始化为 value。 // 如果用于互斥锁&#xff0c;value 填 1&#xff0c;sem_flg 填 SEM_UNDO。 // 如果用于生产消费者模型&am…...

软件设计之SSM(1)

软件设计之SSM(1) 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷新版SSM框架全套视频教程&#xff0c;Spring6SpringBoot3最新SSM企业级开发 资料可以去尚硅谷官网免费领取 学习内容&#xff1a; Spring框架结构SpringIoC容器SpringIoC实践…...

STM32F745IE 能进定时器中断,无法进主循环

当你遇到STM32F745IE这类问题,即能够进入定时器中断但无法进入主循环(main() 函数中的循环),可能的原因和解决方法包括以下几个方面: 检查中断优先级和嵌套: 确保没有其他更高优先级的中断持续运行并阻止了主循环的执行。使用调试工具查看中断的进入和退出情况。检查中断…...

《凡人歌》中的IT职业启示录

《凡人歌》是由中央电视台、正午阳光、爱奇艺出品&#xff0c;简川訸执导&#xff0c;纪静蓉编剧&#xff0c;侯鸿亮任制片&#xff0c;殷桃、王骁领衔主演&#xff0c;章若楠、秦俊杰、张哲华、陈昊宇主演的都市话题剧 &#xff0c;改编自纪静蓉的小说《我不是废柴》。该剧于2…...

go libreoffice word 转pdf

一、main.go 关键代码 完整代码 package mainimport ("fmt""github.com/jmoiron/sqlx""github.com/tealeg/xlsx""log""os/exec""path/filepath" ) import _ "github.com/go-sql-driver/mysql"import &q…...

打造双模兼容npm包:无缝支持require与import

为了实现一个npm包同时支持require和import&#xff0c;你需要确保你的包同时提供了CommonJS和ES6模块的入口点。这通常是通过在package.json文件中指定main和module字段来实现的&#xff0c;以及在构建过程中生成两种不同模块格式的文件。 以下是具体步骤&#xff1a; 设置pa…...

便捷将屏幕投射到安卓/iOS设备-屏幕投射到安卓/iOS设备,Windows/Mac电脑或智能电视上-供大家学习研究参考

1. 下载并安装软件(安卓苹果都需要) 确保 Android 设备和 Windows/Mac电脑都安装。启动应用程序并将 Android 设备和 Windows / Mac 了解到同一个wifi下面。 2、 发起投屏请求 在接收设备上:...

手把手教学:用SiameseAOE从海量文本中提取“属性-观点”对

手把手教学&#xff1a;用SiameseAOE从海量文本中提取"属性-观点"对 1. 为什么需要属性观点抽取&#xff1f; 在日常工作中&#xff0c;我们经常遇到这样的场景&#xff1a;面对成千上万条用户评论、社交媒体反馈或调查问卷&#xff0c;如何快速找出有价值的信息&a…...

EcomGPT-7B系统部署排坑指南:常见错误403 Forbidden等分析与解决

EcomGPT-7B系统部署排坑指南&#xff1a;常见错误403 Forbidden等分析与解决 1. 引言 最近在折腾EcomGPT-7B这个模型&#xff0c;发现不少朋友在部署和调用的时候会遇到各种“坑”。我自己也踩过不少&#xff0c;特别是那个让人头疼的“403 Forbidden”错误&#xff0c;有时候…...

别再手动飞了!用Python脚本一键操控AirSim无人机,实现自动巡航与悬停

用Python脚本全自动操控AirSim无人机&#xff1a;从基础巡航到复杂航线规划 在无人机仿真测试和算法开发中&#xff0c;手动控制不仅效率低下&#xff0c;更难以保证飞行动作的精确性和可重复性。想象一下&#xff0c;当你需要测试一个新型避障算法&#xff0c;或者采集特定飞行…...

写作压力小了!2026最新AI论文写作工具测评与推荐

2026年真正好用的AI论文写作工具&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 …...

轻量级OpenClaw方案对比:nanobot与标准部署性能测试

轻量级OpenClaw方案对比&#xff1a;nanobot与标准部署性能测试 1. 测试背景与动机 最近在为一台闲置的2核4G云主机寻找合适的自动化方案时&#xff0c;我遇到了一个典型的技术选型问题&#xff1a;标准OpenClaw部署对资源要求较高&#xff0c;而新出现的nanobot方案号称是&q…...

跨平台文件同步:OpenClaw调用GLM-4.7-Flash智能归类方案

跨平台文件同步&#xff1a;OpenClaw调用GLM-4.7-Flash智能归类方案 1. 为什么需要智能文件同步 作为一个长期在多台设备间切换工作的开发者&#xff0c;我深受文件管理混乱的困扰。Mac上的设计稿、Windows里的会议记录、手机拍摄的参考图&#xff0c;最终都会堆积在某个临时…...

Python农业物联网开发必踩的5个致命坑,第3个让某省级智慧农场损失87万元(含Grafana+InfluxDB实时告警配置模板)

第一章&#xff1a;Python农业物联网开发必踩的5个致命坑&#xff0c;第3个让某省级智慧农场损失87万元&#xff08;含GrafanaInfluxDB实时告警配置模板&#xff09;传感器数据时间戳漂移导致历史分析全盘失效 Python中若直接使用time.time()或datetime.now()采集温湿度传感器数…...

Navicat Mac版试用期解除解决方案:3种方法实现永久试用

Navicat Mac版试用期解除解决方案&#xff1a;3种方法实现永久试用 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 问题引入&#xff1a;Navicat试用期限制的技术破解需求 对于…...

运维工程师必看:如何用因果AI+DeepSeek实现3分钟精准故障定位(实战案例)

运维工程师必看&#xff1a;如何用因果AIDeepSeek实现3分钟精准故障定位&#xff08;实战案例&#xff09; 在当今复杂的云原生和微服务架构环境中&#xff0c;运维工程师面临的挑战前所未有。系统组件间的依赖关系错综复杂&#xff0c;一个微小的故障可能引发连锁反应&#xf…...

AD5660 16位DAC驱动库深度解析:嵌入式SPI接口实践

1. AD5660 数字模拟转换器库深度解析&#xff1a;面向嵌入式工程师的16位高精度DAC驱动实践1.1 器件本质与工程定位AD5660 是 Analog Devices 推出的单通道、16位电压输出型数模转换器&#xff08;DAC&#xff09;&#xff0c;采用紧凑的 8 引脚 MSOP 封装&#xff0c;专为对精…...