Python运算符、函数与模块和程序控制结构
——雁丘
Python运算符、函数与模块和程序控制结构
- 关于本专栏
- 一 运算符
- 1.1 位运算符
- 1.1.1 按位取反
- 1.1.2 按位与
- 1.1.3 按位或
- 1.1.4 按位异或
- 1.1.5 左移位
- 1.2 关系运算符
- 1.3 运算顺序
- 1.4 运算方向
- 二 函数与模块
- 2.1 内建函数
- 2.2 库函数
- 2.2.1 标准库函数
- 2.2.3 第三方库
- 2.3 包
- 2.4 标识符
- 2.4.1 标识符命名的规则
- 2.4.2 标识符命名的常用方法
- 三 程序控制结构
关于本专栏
关于Python
安装与环境变量配置请查看本专栏文章Python安装与环境变量配置傻瓜式教程(2023年9月)
关于Pycharm
的安装部署和基本使用请查看本专栏文章Python解释器和Pycharm的傻瓜式安装部署
一 运算符
Pyihon 提供了四种类型的运算符:算术运算符、位运算符、关系运算符、逻辑运算符。Python 可以处理很大的数,这一特点常常可以降低程序设计的难度。
Pyihon 运算符 | |||||
---|---|---|---|---|---|
类别 | 运算符 | 功能 | 说明 | 优先级 | 目数 |
/ | () | 括号 | 改变运算顺序 | 0 | / |
算术运算符 | ** | 乘方 | 一般省略不写 | 1 | 双目 |
+ | 正号 | 一般省略不写 | 2 | 单目 | |
- | 负号 | -10 | 2 | ||
位运算符 | ~ | 按位取反 | ~x=-(x+1) | 3 | |
算术运算符 | * | 乘号 | 4 | 双目 | |
/ | 除号 | 4 | |||
// | 整除 | 5//2=2 | 4 | ||
% | 取余 | 5%2=1 | 4 | ||
+ | 加号 | 5 | |||
- | 减号 | 5 | |||
位运算符 | << | 左移位 | 16<<4=16*2*2*2*2 | 7 | 双目 |
>> | 右移位 | 16>>3=16/2/2/2 | |||
& | 与 | 64&15=0 | |||
| | 或 | 64|15=79 | |||
^ | 异或 | 64^15=78 | |||
关系运算符 | < | 小于 | 8 | 双目 | |
> | 大于 | ||||
<= | 小于等于 | ||||
>= | 大于等于 | ||||
== | 等于 | ||||
!= | 不等于 | ||||
逻辑运算符 | not | 非 | 9 | 双目 | |
and | 与 | 10 | |||
or | 或 | 11 |
1.1 位运算符
位运算就是按整数的二进制位进行的运算,运算对象必须是标准的char
和 int
数据类型。
1.1.1 按位取反
按位取反是对操作数的各位二进制值取反,即0变1,1变0。得到原码的反码。
例如:5按位取反结果为-6
~00000101 /十进制 5/
11111010 /十进制-6(二进制为补码)/
按位取反的出现与计算机中负数的表示有关
1.1.2 按位与
按位与是双目运算符,参加运算的两个操作数按二进制位进行“与”运算。类似于数学中“交集”。例如:15&3的结果为3。
00001111
&00000011
00000011
1.1.3 按位或
按位或是双目运算符,参加运算的两个操作数按二进制位进行“或”运算。类似于数学中“并集”。例如:15|32的结果为47。
00001111
|00100000
00101111
1.1.4 按位异或
按位异或也是双目运算符,参加运算的两个操作数按二进制位进行“异或”运算。例如:15^3的结果为12。
利用按位异或可以很容易判断两个数的对应二进制位是相同还是相异,结果为0表示相同,结果为1表示相异。
00001111
^00000011
00001100
1.1.5 左移位
将第一操作数的每一位向左平移第二操作数指定的位数,右边空位补0,左边移出去的位丢弃。例如:15及其左移1位、2位、3位的二进制补码如下表所示。
可见,利用左移位可以快速地实现整数的乘法运算,每左移一位相当于乘以2,左移n位就相当于乘以2n,非常有利于算法的硬件实现。
(6)右移位
将第一操作数的每一位向右平移第二操作数指定的位数,右边移出去的位丢弃。当第一操作数为有符号数时,左边空位补符号位上的值,这种移位称为算术移位;当第一操作数为无符号数时,左边空位补0,这种移位称为逻辑移位。例如:15和-15分别进行右移1位、2位、3位的二进制补码如下表所示
可见,利用右移位可以快速地实现整数的除法运算,每右移一位相当于除以21,右移n位相当于除以2n,非常有利于算法的硬件实现。
1.2 关系运算符
关系(Relational)运算是用来比较两个操作数的值的运算,比较的结果是一个逻辑值
比较字符串时则是按 第一个符号的ASCIT码值,如果相同则比较下一位
1.3 运算顺序
按照优先级从低到高计算
总体上的优先级顺序为: 算术运算符 > 位运算符 > 关系运算符 > 逻辑运算符,但按位取反运算符_
的优先级位于算术运算符的正负号+
、-
和乘方**
之间。
1.4 运算方向
除了关系运算符的运算顺序是从左往右,其他均是从右往左
二 函数与模块
一个能解决大规模问题的程序通常会被分解成若千功能模块,这些功能模块被称为函数。使用函数通常可以使程序的结构更简洁易懂,可以提高程序的可读性和可复用性,Python 中的雨数包括内建函数、标准库函数,第三方库和用户自定义函数。
2.1 内建函数
内建函数就是不需要进行外部导人就能直接使用的函数,可以使用函数 dir(__builtins__)
查看。下列为 Python 3.6 中的所有内建函数:
Python 常用初级内建函数 | |
---|---|
函数名 | 功能 |
abs() | 返回数字的绝对值 |
bool() | 转换为布尔类型(若没有参数,返回 false) |
int() | 转换为整数 |
float() | 转换为浮点数 |
cmplex() | 转换为复数 |
str() | 转换为字符串 |
bin() | 返回一个整数二进制表示。 |
otc() | 返回一个整数 八进制表示。 |
hex() | 返回一个整数十六进制表示。 |
round() | 返回统计学的四舍六入五凑偶 |
type() | 返回参数的数据类型 |
id() | 返回对象的身份标识 |
all() | 判断给定的元组或列表是否都为 True(空元组、空列表返回值为 True) |
any() | 判断给定的元组或列表是否有 True空元组、空列表返回值为 True) |
ascii() | 返回字符串(非 ASCII 字符转化为转义字符) |
help() | 查询该函数的帮助信息 |
2.2 库函数
2.2.1 标准库函数
除了内建函数外, Python 还提供了标准库函数,需要先导入模块再使用函数,每个库有相关的一些函数。使用dir(模块名)
查看该模块所有函数
- 导入一个模块
>>> import math # 导入math模块
>>> math.floor(3.5) # 使用math模块的向下取整函数
3
- 导入多个模块
>>> import math ,os ,operator
- 只导入模块中一个函数
from...import...
>>> from math import floor
>>> math.floor(3.5) # 使用math模块的向下取整函数
3
优点:无需再写math.
,用from math import *
可以导人 math 模块中的所有属性和函数。
- 利用
as
在导入时为模块增加别名,例如import numpy as np
表示导人numpy
模块并为其取一个别名np
,后续模块名numpy
均可用np
表示。
2.2.3 第三方库
第三方库提前下载后相当于标准库函数
可以在 PyPI 页面上搜索和安装、发布 Python 第三方库(模块)
安装其中的第三方库官方推荐使用Python 库管理工具 pip
,只要将第三方库下载到本地然后进行安装即可。
举例
安装安卓自动测试库atx
,步骤为:
- Python 官网下载文件 get-pip.py(目前 Python IDE 中一般都预装了 pip,不需要另外载和安装,直接使用第3步安装即可)
- 在命令提示符方式下运行如下命令安装 pip。
python get-pip. py
3 使用 pip 安装 atx 第三方库。
pip install atx
2.3 包
包是由模块和子包组成的一个应用程序执行环境,是一个有层次的文件目录结构
>>> import A. C. cl
>>> A. C. cl. foo(123)
或者
>>> from A. C. cl import foo
>>> foo( 123)
A
是最顶层的包,C
是它的子包,而 c1
是子包 C
中的模块。
2.4 标识符
在 Python 程序中,我们对于变量、方法、类、用户自定义函数等等可以由用户起名字,这些名字,我们把它统一的称之为标识符。
2.4.1 标识符命名的规则
- 内容限定:只能用
- 英文
- 中文(不建议)
- 数字(不能用于开头)
- 下划线
_
- 大小写敏感
- 不可使用关键字
2.4.2 标识符命名的常用方法
-
遵循“见名知意”原则,在每一处逻辑断点处标识,两种方法:
windows风格,驼峰命名法:大写字母标记逻辑断点,如mathGrades
;
unix风格,下划线法: 下划线标记逻辑断点,如math_grades
。 -
变量中的英文字母全部小写
三 程序控制结构
相关文章:
Python运算符、函数与模块和程序控制结构
给我家憨憨写的python教程 ——雁丘 Python运算符、函数与模块和程序控制结构 关于本专栏一 运算符1.1 位运算符1.1.1 按位取反1.1.2 按位与1.1.3 按位或1.1.4 按位异或1.1.5 左移位 1.2 关系运算符1.3 运算顺序1.4 运算方向 二 函数与模块2.1 内建函数2.2 库函数2.2.1 标准库…...
微服务保护-Sentinel
初识Sentinel 雪崩问题及解决方案 雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时&a…...
Doris 导出表结构或数据
MYSQLDUMP 导出表结构或数据 Doris 在0.15 之后的版本已经支持通过mysqldump 工具导出数据或者表结构 使用示例 导出 导出 test 数据库中的 table1 表:mysqldump -h127.0.0.1 -P9030 -uroot --no-tablespaces --databases test --tables table1导出 test 数…...
SELECT * from t_user where user_id = xxx,可以从那几个点去优化这句sql
优化SQL查询可以从以下几个方面入手: 1. 索引优化:通过为查询涉及的列添加合适的索引,可以提高查询的效率。在该SQL语句中, user_id 列被用作查询条件,可以为 user_id 列创建一个索引。 2. 避免使用 SELECT *…...
解决报错 java.lang.IllegalArgumentException: Cannot format given Object as a Date
报错原因:我们在SimpleDateFormat.format转化时间格式的时候,传入的值无法转换成date而报的错 我的代码大概就是下面这种 LocalDate now LocalDate.now();String format1 new SimpleDateFormat("yyyy-MM-dd").format(now); 发现SimpleDateF…...
【Git】03-GitHub
文章目录 1. GitHub核心功能2. GitHub搜索项目3. GitHub搭建个人博客4. 团队项目创建5. git工作流选择5.1 需要考虑的因素5.2 主干开发5.2 Git Flow5.3 GitHub Flow5.4 GitLab Flow(带生产分支)5.4 GitLab Flow(带环境分支)5.4 GitLab Flow(带发布分支) 6. 分支集成策略7. 启用…...
Java手写最短路径算法和案例拓展
Java手写最短路径算法和案例拓展 1. 算法手写的必要性 在实际开发中,经常需要处理图的最短路径问题。虽然Java提供了一些图算法库,但手写最短路径算法的必要性体现在以下几个方面: 理解算法原理:手写算法可以帮助我们深入理解最…...
深度学习实战51-基于Stable Diffusion模型的图像生成原理详解与项目实战
大家好,我是微学AI,今天给大家介绍一下深度学习实战51-基于Stable Diffusion模型的图像生成原理详解与项目实战。大家知道现在各个平台发的漂亮小姐姐,漂亮的图片是怎么生成的吗?这些生成的底层原理就是用到了Stable Diffusion模型。Stable Diffusion是一种基于深度学习的图…...
基于matlab实现的多普勒脉冲雷达回波仿真
完整程序: clear all;clc;close all; fc3e9; %载波频率 PRF2000; Br5e6; %带宽 fs10*Br; %采样频率 Tp5e-6; %脉宽 KrBr/Tp; %频率变化率 c3e8; %光速 lamda…...
Linux服务器中安装Anaconda+Tensorflow+Keras
Anaconda安装 从https://repo.anaconda.com/archive/查看你需要下载的Anaconda版本,例如2020.11的x86_64(uname -a 查看linux框架)版下载Anaconda到linux服务器, wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Li…...
ubuntu+.net6+docker 应用部署教程
先期工作 1、本地首先安装 Docker Desktop 2、本地装linux in windows 3、生成镜像 后期工作 1、云服务器部署 生成镜像方法 1、生成Dockerfile配置文件 开发工具visual studio 2022 如果项目已经存在,可以选中项目,右键点击->选择添加Docker…...
Spring常见面试题总结
什么是Spring Spring是一个轻量级Java开发框架,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题,以提高开发效率。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序…...
Git全套命令使用
日升时奋斗,日落时自省 目录 1、Git安装 1.1、创建git本地仓库 1.2、配置Git 1.3、认识Git内部区分 2、Git应用操作 2.1、添加文件 2.2、查看日志 2.3、查看修改信息 2.4、查看添加信息 3、版本回退 4、撤销修改 4.1、工作区撤销 4.2、已经add…...
【陕西理工大学-数学软件实训】数学实验报告(8)(数值微积分与方程数值求解)
目录 一、实验目的 二、实验要求 三、实验内容与结果 四、实验心得 一、实验目的 1. 掌握求数值导数和数值积分的方法。 2. 掌握代数方程数值求解的方法。 3. 掌握常微分方程数值求解的方法。 二、实验要求 1. 根据实验内容,编写相应的MATLAB程序,…...
Vue3为什么推荐使用ref而不是reactive
为什么推荐使用ref而不是reactive reactive本身具有很大局限性导致使用过程需要额外注意,如果忽视这些问题将对开发造成不小的麻烦;ref更像是vue2时代option api的data的替代,可以存放任何数据类型,而reactive声明的数据类型只能是对象; 先抛出结论,再详细说原因:非必要不用rea…...
JavaScript函数this指向
一、this的指向规则 1.this到底指向什么呢? 我们先来看一个让人困惑的问题: 定义一个函数,我们采用三种不同的方式对它进行调用,它产生了三种不同的结果 // 定义函数 function foo(name) {console.log("foo函数:", …...
Java的序列化
写在前面 本文看下序列化和反序列化相关的内容。 源码 。 1:为什么,什么是序列化和反序列化 Java对象是在jvm的堆中的,而堆其实就是一块内存,如果jvm重启数据将会丢失,当我们希望jvm重启也不要丢失某些对象ÿ…...
计算机二级python简单应用题刷题笔记(一)
计算机二级python简单应用题刷题笔记(一) 1、词频统计:键盘输入一组我国高校所对应的学校类型,以空格分隔,共一行。2、找最大值、最小值、平均分:键盘输入小明学习的课程名称及考分等信息,信息间…...
Spring注解家族介绍: @RequestMapping
前言: 今天我们来介绍RequestMapping这个注解,这个注解的内容相对来讲比较少,篇幅会比较短。 目录 前言: RequestMapping 应用场景: 总结: RequestMapping RequestMapping 是一个用于映射 HTTP 请求…...
系统架构设计师(第二版)学习笔记----信息安全系统及信息安全技术
【原文链接】系统架构设计师(第二版)学习笔记----信息加解密技术 文章目录 一、信息安全系统的组成框架1.1 信息安全系统组成框架1.2 信息安全系统技术内容1.3 常用的基础安全设备1.4 网络安全技术内容1.5 操作系统安全内容1.6 操作系统安全机制1.7 数据…...
交换机的工作原理(含实例,华为ensp操作)
目录 1.交换机学习和转发 案例 1.设置静态地址表项 2.配置黑洞mac地址表项 1.交换机学习和转发 交换机工作在数据链路层。当交换机从某个端口收到一个帧时,它并不是向所有的接口转发此帧,而是根据此帧的目的MAC地址&a…...
从字符串中删除指定字符
任务描述 编写一个函数实现功能:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。例如:程序执行时输入字符串:turbo c and Borland c,从键盘输入字符n,则输出后变为:turbo c ad Borlad c。如…...
Xcode14.3.1 真机调试iOS17的方法(无iOS17 DeviceSupport)
由于iOS17需要使用Xcode15 才能调试,而当前Xcode15都是beta,正式版还未出,那么要真机调试iOS17的方式一般有两种: 方法一: 一种是下载新的Xcode15 beta版 (但Xcode包一般比较大,好几个G&#…...
JWT基础
概念 JSON Web Token本质上就是一串字符串,一串包含了很多信息的字符串令牌拥有三个部分头部-包含加密算法和令牌类型{"alg":"算法名称","type":"JWT"}负载-包含数据和信息-七个官方默认-也可以自己定义内容{issÿ…...
关于远程工作的面试可能存在的陷阱
附上看到的完整帖子地址:面试 POPER 的后端开发工程师的离奇经历 分享一下我遇到过的,我至少面试过10个远程工作,其中有3个的面试是直接让我完成一个需求的,前两次都耐心做了,第3次看到相同要求时我都懒得回复了&…...
Qt5开发及实例V2.0-第一章Qt概述
Qt5开发及实例V2.0-第一章-Qt概述 第一章-Qt概述1.1 什么是Qt1.2 Qt 5的安装1.2.1 下载安装Qt 51.2.2 运行Qt 5 Creator1.2.3 Qt 5开发环境 1.3 Qt 5开发步骤及实例1.3.1 设计器Qt 5 Designer实现1.3.2 代码实现简单实例 L1.2 Qt 5安装:概念解析L1.3 Qt 5开发步骤及…...
matlab检索相似图像
在Matlab中检索相似图像通常需要使用图像处理和计算机视觉技术。以下是一种常见的方法,可以帮助您在Matlab中进行相似图像检索: 准备图像数据库: 首先,您需要有一个包含待检索图像的图像数据库。这些图像应该经过预处理࿰…...
ArrayBlockingQueue 带有三个参数的构造函数为何需要加锁?
哪一个构造函数 public ArrayBlockingQueue(int capacity, boolean fair,Collection<? extends E> c) {this(capacity, fair);final ReentrantLock lock = this.lock;lock.lock(); // Lock only for visibility, not mutual exclusiontry {final Object[] items = this…...
实训笔记——Spark计算框架
实训笔记——Spark计算框架 Spark计算框架一、Spark的概述二、Spark的特点三、Spark的安装部署(安装部署Spark的Cluster Manager-资源调度管理器的)3.1 本地安装--无资源管理器3.2 Spark的自带独立调度器Standalone3.2.1 主从架构的软件3.2.2 Master/wor…...
自定义类型:结构体
自定义类型:结构体 一:引入二:结构体类型的声明1:正常声明2:特殊声明 三:结构体变量的创建和初始化1:结构体变量的创建2:结构体变量的初始化 三:结构体访问操作符四:结构…...
网站建设网站免费/百度搜图片功能
调试了几天,感觉SVN要简单得很,前几天搞CVS一直有问题,很是郁闷,所有改用SVN了 SVN又有两种方式,svnserve服务方式和apache方式, 如果用svnserve方式的话推荐直接用Setup-Subversion-1.6.13.msi(目前最新版) 哪果用apache方式的话 推荐用VisualSVN-Server-2.1.5.msi(目前最新版…...
在境外做色情网站/宁波网站关键词排名推广
可以参考此篇博文. http://www.cnblogs.com/linjiqin/archive/2013/03/24/2979736.html 不过我按照其步骤手动安装Linux的rar文件执行make命令并没有成功安装.... 在线通过yum 安装有时候会出现无法解析一些网站的情况,造成安装失败. 这个有时候需要分时间(我在线安装的时间是…...
沈阳网站建设发布/网页在线客服免费版
CentOS的安装方式常用的有三个1 光盘安装2 通过引导光盘网络安装3 U盘安装这次我用的是通过引导光盘网络安装环境:1 VirtualBox虚拟出来的Linux平台CentOS官网镜像站点 https://www.centos.org/download/mirrors/,在它的列表中,选择了浙江大学…...
网站建设中最基本的决策/百度app
OSI七层参考模型:(注意数据发送和接收的顺序不同,发送由7到1,接收由1到7) 物理层:高低电平如何传输;数据链路层:提供介质,建立传输线路;网络层:提…...
微信分销系统价格/seo优化代理
在日志中记录Java异常信息的正确姿势参考文章: (1)在日志中记录Java异常信息的正确姿势 (2)https://www.cnblogs.com/nuccch/p/11061929.html 备忘一下。...
招聘公司怎么做网站/国家职业技能培训学校
申明:本文来自b站springboot视频讲解笔记部分。b站链接:自动配置原理 本文主要讲三点:配置文件到底能写什么?怎么写?自动配置原理; 配置文件能配置的属性参照 1、自动配置原理: 1)、SpringB…...