Python常忘的基础知识
0.目录
1.进制
2.字符
3.类型
4.变量与运算符
- 4.1 值类型与引用类型
- 4.2 列表的可变与元组的不可变
- 4.3 运算符
5.包与模块
- 5.1 Python项目的组织结构
- 5.2 导入模块
- 5.3 __init__.py的用法
- 5.4 模块内置变量
- 5.5 入口文件
- 5.6 __name__的经典应用
- 5.7 相对导入和绝对导入
6.函数
- 6.1 认识函数
- 6.2 序列解包与链式赋值
- 6.3 必须参数、关键字参数、默认参数
- 6.4 可变参数、关键字可变参数
- 6.5 global关键字
1.进制
1.1 各进制的表示
0b(零b)表示二进制
0o(零o)表示八进制
0x(零x)表示十六进制
1.2 各进制的转换
bin() 将其他进制数转化为二进制
int() 将其他进制数转化为十进制
hex() 将其他进制数转化为十六进制
oct() 将其他进制数转化为八进制
2.字符
2.1 转义字符
转义字符:
- 特殊的字符
- 无法“看见”的字符
- 与语言本身语法有冲突的字符
- \n 换行
- \r 回车
- ' 单引号
- \t 横向制表符
2.2 原始字符串
用 r'字符串' 或 R'字符串' 表示原始字符串
3.类型
3.1 基本数据类型
有序(序列):
- 列表 list
- 元组 tuple
无序:
- 集合 set
- 字典 dict
序列共有的操作:
- len() 求序列的长度
- max() 求最大元素
- min() 求最小元素
- ord() 求ASCII码值
集合的操作:
{1,2,3,4,5,6} - {3,4} 为 {1,2,5,6}
{1,2,3,4,5,6} & {3,4} 为 {3,4}
{1,2,3,4,5,6} | {3,4,7} 为 {1,2,3,4,5,6,7}
字典的规则:
- 不能有相同的key
- key的取值:必须是不可变类型,如int str tuple
- value的取值:str int float list set dict
3.2 type()
type((1)) 是 int
type((1,)) 是 tuple
type(('hello')) 是 str
type([1]) 是 list
定义空元组:type(())
定义空集合:type(set())
定义空字典:type({})
4.变量与运算符
4.1 值类型与引用类型
值类型:int str tuple(不可变)
引用类型:list set dict(可变)
id()函数显示变量在内存中的地址
4.2 列表的可变与元组的不可变
列表可改变
元组不可改变
4.3 运算符
1.算术运算符:加减乘除、取余%、乘方**
2.赋值运算符
3.比较(关系)运算符
不只是数字才能做比较运算:
4.逻辑运算符:and(与)、 or(或)、 not(非)
5.成员运算符:in、not in
6.身份运算符:is、not is
如何判断变量的值、身份与类型?
- 用 == 比较值是否相等
- 用 is 比较身份是否相等,即比较两个变量的内存地址是否相等,可以用 id() 查看变量的内存地址
- 用 isinstance() 比较类型是否相等,不推荐使用 type(a) == int 这种方法,而是使用 isinstance(a, str) 这种方法。而且还可以使用 isinstance(a, (int, str, float)) 判断a是不是int, str, float中的任意一种。最重要的是type不能判断变量的子类是否属于某种类型,但是isinstance可以
ps:对象的三个特征:id、value、type(分别用is、==、isinstance)
7.位运算符(把数字当做二进制数进行运算):
&(按位与)
|(按位或)
^(按位异或)
~(按位取反)
<<(左移动)
>>(右移动)
5.包与模块
5.1 Python项目的组织结构
包 → 模块 → 类 → 函数、变量
包相当于文件夹
命名空间:包名.模块名
如何让普通文件夹成为包?——必须包含__init__.py文件
__init__.py文件本身也是一个模块
包下__init__.py的模块名就是包名
5.2 导入模块
import导入模块:
- import 模块名 as xxx
- import 包名.模块名 as xxx——print(包名.模块名.变量名)
from import 导入模块
- from 包名.模块名 import 变量名
- from 包名 import 模块名
- from 包名.模块名 import *
在模块中设置 __all__ = ['a', 'c'] 可以控制 from 包名.模块名 import * 导入的变量为a和c
5.3 __init__.py的用法
导入包时会自动运行 __init__.py 文件
在 __init__.py 文件使用 __all__ = ['c1'] 可以控制导入的模块为 c1.py
包与模块的几个常见错误:
- 包和模块是不会被重复导入的
- 避免循环导入
- 导入模块时Python会自动执行导入模块里面的所有代码
5.4 模块内置变量
dir()函数返回当前模块所有的变量:
内置变量:
- name 是模块的完整名称(包括命名空间)
- package 是包名
- doc 是模块的注释
- file 是当前模块在系统里面的物理路径
不同的运行:
5.5 入口文件
入口文件会导致内置变量的不同
- 如果一个普通的.py文件被当作应用程序的入口,那么它的变量 __name__ 就不再是本身模块的名称,而是会被强制更改为 __main__
- 如果一个普通的.py文件被当作应用程序的入口,那么它的顶级是不会再有包的如果一个普通的.py文件被当作应用程序的入口,那么它的变量 __file__ 不再是绝对路径,而是和执行python命名所在目录有关
5.6 __name__的经典应用
使用dir()函数查看模块或类相关的变量:
Make a script both importable and executable
if __name__ == "__main__":
Python脚本既可以作为一个普通的模块提供给其它应用程序来调用,也可以让它自己成为一个可执行的文件。
__name__的经典应用:
使用 python -m 命令将一个可执行文件当作一个普通的模块:
ps:普通的模块必须要有包
5.7 相对导入和绝对导入
决定顶级包的是可执行文件
绝对导入(绝对路径):
- import 顶级包...中间包...模块名
- 绝对引入一定要从顶级包开始
相对引入:
- . 表示当前目录
- .. 表示上一级目录
在入口文件中不能进行相对导入:
相对路径之所以能够找到对应的模块,在于根据内置变量 __name__ 来定位。但是由于 main.py 是入口文件, __name__ 被强行改成 __main__ ,但是 __main__ 这个模块不存在,所以在入口文件中不可以使用相对路径来导入模块
6.函数
6.1 认识函数
round()函数用于保留几位小数(自动四舍五入):
如何限制函数递归层数:
import sys
sys.setrecursionlimit(1000)
如何让函数返回多个结果:
- 返回元组
- 序列解包
6.2 序列解包与链式赋值
序列解包(数量要相等):
链式赋值:
将a, b, c = 1, 1, 1
改为a=b=c=1
6.3 必须参数、关键字参数、默认参数
1.必须参数——形参、实参
形参:
实参:
2.关键字参数
不用按必须参数的顺序传递,随意顺序
3.默认参数
6.4 可变参数、关键字可变参数
1.可变参数
必须参数必须放在可变参数前面
可以把默认参数放在可变参数后面,然后利用关键字参数传值
使用*a来解包元组:
2.关键字可变参数
传入任意个数的关键字可变的参数:
遍历字典:items
使用**a来解包字典:
ps:什么参数都不传,param 将为空字典
6.5 global关键字
global关键字:声明全局变量
Python常忘的基础知识的更多相关文章
- Python常忘的进阶知识(下)
0.目录 1.装饰器 1.1 为每个函数都增加一个功能 1.2 装饰器只是一种模式 1.3 语法糖 1.4 函数需要传递参数,该如何更改装饰器? 1.5 函数需要传递关键字参数,该如何更改装饰器? 2 ...
- Python常忘的进阶知识(上)
0.目录 1.面向对象 1.1 函数与方法 1.2 类变量与实例变量 1.3 实例方法.类方法.静态方法 1.4 公开和私有:没有什么是不能访问的 1.5 继承 2.正则表达式 2.1 Python内 ...
- python快速改造:基础知识
改造"Hacking"并不同于破坏"cracking" python快速改造:基础知识 一行就是一行,不管多少,不用加分号 交互式python解释器可以当作计算 ...
- 深入理解python(一)python语法总结:基础知识和对python中对象的理解
用python也用了两年了,趁这次疫情想好好整理下. 大概想法是先对python一些知识点进行总结,之后就是根据python内核源码来对python的实现方式进行学习,不会阅读整个源码,,,但是应该会 ...
- python - 接口自动化 - 接口测试基础知识
# -*- coding:utf-8 -*- '''@project: jiaxy@author: Jimmy@file: study_接口测试基础知识一.py@ide: PyCharm Commun ...
- 面试必备:常考Java基础知识总结(持续更新)
面试必备:常考Java基础知识总结(持续更新) 本文的Java方面基础知识是我在面试过程中的积累和总结. Java基本数据类型.所占空间大小及对应包装类 基本类型 大小 包装类 boolean - B ...
- Python学习之并发基础知识
8 并发编程 8.1 基础知识 8.1.1 操作系统的定义 操作系统是存在于硬件与软件之间,管理.协调.调度软件与硬件的交互. 资源管理解决物理资源数量不足和合理分配资源这两个问题, 通俗来说,操作系 ...
- [Python笔记]第一篇:基础知识
本篇主要内容有:什么是python.如何安装python.py解释器解释过程.字符集转换知识.传参.流程控制 初识Python 一.什么是Python Python是一种面向对象.解释型计算机程序设计 ...
- python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题
笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...
随机推荐
- day 12 文件操作
1.文件定位读写 f.seek(2,0) ##### f.seek(2,0) In [4]: f = open("test.py","r") In [5]: ...
- 安装支持elasticsearch使用sql查询插件
一.ElasticSearch-SQL介绍 ElasticSearch-SQL(后续简称es-sql)是ElasticSearch的一个插件,提供了es 的类sql查询的相关接口.支持绝大多数的sql ...
- vue 与原生app的对接交互(混合开发)
小伙伴们在用vue开发h5项目特别是移动端的项目,很多都是打包后挂载在原生APP上的,那就少不了与原生交互了,我最近就是在坐这个,踩了一些坑,拿出来给大家分享下. 0.通过url传输数据:(一般是在入 ...
- Jmeter4.0安装
1.检查安装环境 1.1 JDK要求 JDK版本:1.8 1.2 检查是否安装JDK win + R 快捷键打开运行,输入 cmd 打开面板,在面板中输入 java -version,出现如下信息,即 ...
- 转 gerrit
开发环境 https://blog.csdn.net/u013207966/article/details/79112740 先记录下我的开发环境以及要正确安装gerrit需要用到的工具: Redha ...
- HDU-6315:Naive Operations(线段树+思维)
链接:HDU-6315:Naive Operations 题意: In a galaxy far, far away, there are two integer sequence a and b o ...
- Vue 编程之路(一)——父子组件之间的数据传递
最近公司的一个项目中使用 Vue 2.0 + element UI 实现一个后台管理系统的前端部分,属于商城类型.其中部分页面是数据管理页,所以有很多可以复用的表格,故引入自定义组件.在这里分享一下开 ...
- python之奇思妙想
一.概述 本篇主要介绍自己平常所遇到的各种有趣的关于python的简短例子 二.正文 chapter 1 解决思路: s='{:,.2f}'.format(100000.0) print(s) cod ...
- 如何使用phpredis连接Redis的方法
本文跟大家介绍使用同一VPC内弹性云服务器ECS上的phpredis连接Redis的方法. 更多的客户端的使用方法,请参考https://redis.io/clients 前提条件 已成功申请Redi ...
- Javascript 初学笔记
变量作用域 自 ES2015 起,JS 引入let 和 const 关键词定义变量的块作用域(Block Scope). var 仅支持全局作用域(Global Scope)和函数作用域(Functi ...