0.目录

1.进制

2.字符

3.类型

4.变量与运算符

5.包与模块

6.函数

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

如何判断变量的值、身份与类型?

  1. 用 == 比较值是否相等
  2. 用 is 比较身份是否相等,即比较两个变量的内存地址是否相等,可以用 id() 查看变量的内存地址
  3. 用 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)

如何让函数返回多个结果:

  1. 返回元组
  2. 序列解包

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常忘的基础知识的更多相关文章

  1. Python常忘的进阶知识(下)

    0.目录 1.装饰器 1.1 为每个函数都增加一个功能 1.2 装饰器只是一种模式 1.3 语法糖 1.4 函数需要传递参数,该如何更改装饰器? 1.5 函数需要传递关键字参数,该如何更改装饰器? 2 ...

  2. Python常忘的进阶知识(上)

    0.目录 1.面向对象 1.1 函数与方法 1.2 类变量与实例变量 1.3 实例方法.类方法.静态方法 1.4 公开和私有:没有什么是不能访问的 1.5 继承 2.正则表达式 2.1 Python内 ...

  3. python快速改造:基础知识

    改造"Hacking"并不同于破坏"cracking" python快速改造:基础知识 一行就是一行,不管多少,不用加分号 交互式python解释器可以当作计算 ...

  4. 深入理解python(一)python语法总结:基础知识和对python中对象的理解

    用python也用了两年了,趁这次疫情想好好整理下. 大概想法是先对python一些知识点进行总结,之后就是根据python内核源码来对python的实现方式进行学习,不会阅读整个源码,,,但是应该会 ...

  5. python - 接口自动化 - 接口测试基础知识

    # -*- coding:utf-8 -*- '''@project: jiaxy@author: Jimmy@file: study_接口测试基础知识一.py@ide: PyCharm Commun ...

  6. 面试必备:常考Java基础知识总结(持续更新)

    面试必备:常考Java基础知识总结(持续更新) 本文的Java方面基础知识是我在面试过程中的积累和总结. Java基本数据类型.所占空间大小及对应包装类 基本类型 大小 包装类 boolean - B ...

  7. Python学习之并发基础知识

    8 并发编程 8.1 基础知识 8.1.1 操作系统的定义 操作系统是存在于硬件与软件之间,管理.协调.调度软件与硬件的交互. 资源管理解决物理资源数量不足和合理分配资源这两个问题, 通俗来说,操作系 ...

  8. [Python笔记]第一篇:基础知识

    本篇主要内容有:什么是python.如何安装python.py解释器解释过程.字符集转换知识.传参.流程控制 初识Python 一.什么是Python Python是一种面向对象.解释型计算机程序设计 ...

  9. python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题

    笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...

随机推荐

  1. apache开启伪静态的方法 php篇

    打开apache的配置文件httpd.conf 找到 #LoadModule rewrite_module modules/mod_rewrite.so 把前面#去掉.没有则添加,但必选独占一行,使a ...

  2. 【JUC源码解析】ReentrantReadWriteLock

    简介 ReentrantReadWriteLock, 可重入读写锁,包括公平锁和非公平锁,相比较公平锁而言,非公平锁有更好的吞吐量,但可能会出现队列里的线程无限期地推迟一个或多个读线程或写线程的情况, ...

  3. 【xshell属性设置】如何修改xshell字体大小

    1.周末在家,想搞一下学习,于是远程公司的电脑(我的移动硬盘在公司,里面有虚拟机及测试环境) 发现xshell界面字体太小,不方便看,于是研究了一下如何来设置xshell 的字体大小 2.点击左上角的 ...

  4. SQL优化避免索引失效

    Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反.例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可 能是 oracle 索引失效造成的.or ...

  5. 现有新的iOS更新可用,请从iOS12 beta版进行更新.解决方案

    问题描述: ios系统一直弹出“现有新的iOS更新可用,请从iOS12 beta版进行更新”的提示,很烦的. 应该只出现在安装测试版ios12的手机上. 解决方案: 删除描述文件无法解决. 有网友机制 ...

  6. thinkphp5登录并保存session、根据不同用户权限跳转不同页面

    本文讲述如何在thinkphp5中完成登录并保存session.然后根据不同的用户权限跳转相应页面功能的实现.我也在学习thinkphp源码的路上,记录一下并与大家分享.完成该步骤主要有以下三个步骤完 ...

  7. selenium 标签页切换

    from selenium import webdriver import time browser=webdriver.Chrome() browser.maximize_window() # 窗口 ...

  8. excel导出功能原型

    本篇博客是记录自己实现的excel导出功能原型,下面我将简单介绍本原型: 这是我自制的窗体,有一个ListView和一个Button(导出)控件. 这是我在网上找到了使用exel需要引用的库. usi ...

  9. Java中的多态,引用类型的转换

    1.多态分为引用多态和方法多态,见测试类 package com.wangcf; //父类 public class Animal { public void eat(){ System.out.pr ...

  10. package分析

    由于大家对package的使用存在太多困惑,我在这里将自己对于package的使用的领悟进行一点总结: package中所存放的文件 所有文件,不过一般分一下就分这三种 1,java程序源文件,扩展名 ...