Python知识整理(一)
一、Python交互模式(终端上进行)
python # 进入到Python交互模式,提示符是 >>>
exit() # 退出Python交互模式
python xxx.py # 执行名为xxx的python文件,注意要先使用cd指令切换到xxx.py所在目录下
e.g:
>>> 2**10 #2**10 == 2^{10}
>>> 1024
二、Python基本语法
1.输出
print()
e.g: print('hello , world')
print('The quick brown fox', 'jumps over', 'the lazy dog')
#print函数可以接受多个字符串,并依次打印每个字符串,遇到逗号“,”输出一个空格
#字符串的相关输出格式,见后字符串部分
#print函数也可以打印整数或计算结果
print(300)
print(100+200)
print('100 + 200 =', 100+200)
2.输入
(变量名) = input()
e.g:
name = input()
#我们输入内容将存至name变量中,在交互模式下我们可以直接输入name,就可以查看name变量中的值啦,当然我们也可以通过print()函数来查看,即:
print(name)
#input()返回的数据类型为str
#当时两种方式还是有区别的,见下图

3.基础常识
# # -- 注释,相当于C++中的‘//’
# : -- 语句以冒号:结尾时,缩进的语句视为代码块,相当于C语言中的{},通常是以4个空格为一次缩进,即一个tab键
# import math == include <cmath>
# 另外,Python是大小写敏感的,这点需要注意
4.数据类型
1.整数--Python可以处理任意大小的整数,高精度!
注意:Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如Java对32位整数的范围限制在
-2147483648-2147483647。Python的浮点数也没有大小限制,但是超出一定范围就直接表示为
inf(无限大)。
2.浮点数--1.23、1.23e9==1.23*10^9
整数运算永远是精确的(除法也是精确的!),而浮点数运算则可能会有四舍五入的误差。
3.字符串--单引号‘和双引号“括起来的文本
(1)在字符串中若包含单/双引号,需采用转义字符‘\’来标识。
e.g:
'I\'m OK!!' --> I'm OK!!
#r'xxxxx' -->表示‘’内部字符串默认不转义
e.g:
>>> print('\\\t\\')
\ \
>>> print(r'\\\t\\')
\\\t\\
(2)Python允许用'''...'''的格式表示多行内容
print('''line1
... line2
... line3''')
line1
line2
line3
#在交互式命令行内输入,注意在输入多行内容时,提示符由>>>变为...,提示你可以接着上一行输入,注意...是提示符,不是代码的一部分
len()--计算字符串所占字符/字节数
(3)字符串的编码(了解)
(4)字符串的格式化
常见的占位符有:
占位符 替换内容 %d 整数 %f 浮点数 %s 字符串 %x 十六进制整数 其实还有比如指定是否补零与整数、小数的位数。如
%02d、%.2f。>>> 'Hello, %s' % 'world'
'Hello, world'
#只有一个%?时,括号可省略
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
#特别的,若字符串中‘%’是一个普通字符,我们需采用‘%%’来表示%
>>>'growth rate: %d %%'%7
'growth rate: 7 %'
(了解)另一种格式化字符串的方法是使用字符串的
format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,不过这种方式写起来比%要麻烦得多:>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成绩提升了 17.1%'
最后一种格式化字符串的方法是使用以
f开头的字符串,称之为f-string,它和普通字符串不同之处在于,字符串如果包含{xxx},就会以对应的变量替换:>>> r = 2.5
>>> s = 3.14 * r ** 2 #3.14*(r^2)
>>> print(f'The area of a circle with radius {r} is {s:.2f}')
The area of a circle with radius 2.5 is 19.62
4.布尔值--True、False
可以进行 or(或)and(与)not——(非)运算
5.空值-->None,不能理解为0
6.变量与常量
变量命名规则与C语言类似,需要注意的是Python是动态语言,因此无需指定类型。
常量通常用全大写表示** --> 幂运算 // -->地板除,只保留除法商的整数部分
7.列表list
>>> classmates = ['Michael','Bob','Tracy']
#len()可以获得list元素对个数
>>> len(classmates)
3
#可以用下标索引的方式来访问list中的元素,类似c语言的数组,下标从0开始,到len(classmates)-1结束
>>> classmates[0]
'Michael'
#当然,我们可以通过-1来获取最后一个元素
>>> classmates[-1]
#类似的-2、-3,但我们仍需要注意范围。
#list是个可变的有序表,因此可以向list中追加元素至末尾,也可以插入指定位置,当然也可以进行删除。
>>> classmates.append('Adam')
>>> classmates.insert(1,'Jack')
>>> classmates.pop()
>>> classmates.pop(1)
>>> classmates[1]='Sarah'
#list的元素数据类型可以不相同,也可以一个list包含其他list,这点不同于数组。
>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4
#而若要取到s中元素list里的元素,我们需采用s[2][0]、s[2][1]的方式,类似于二维数组,三维、四维...不常用
#list还可以为空
>>> L = []
>>> len(L)
0
8.元组tuple
tuple和list最大的不同就是,list是可变的,而tuple初始化后就无法进行修改了。
>>> classmates = ('Michael', 'Bob', 'Tracy')
取元素和list一样。可以用下标去访问。因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。同样,也可以定义一个空的tuple。特别地,定义只有一个元素的tuple是需采用
t=(1,)的形式,如果是t=(1)的话,其结果是数字1。当然,tuple中的元素类型可以为list,如果是这样list中的元素是可变的。
9.字典dict--类比于C语言中的map
使用键-值(key-value)方式存储。
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
#把数据放入dict的方法,除了初始化时指定外,还可以通过key放入
>>> d['Adam'] = 67
>>> d['Adam']
67
#要避免key不存在的错误,一是通过in判断key是否存在,二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value。
>>> 'Thomas' in d
False
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
#删除一个key
>>> d.pop('Bob')
#请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。并且,key应为不可变对象,故不可采用list数据类型
10.集合set--类比于C语言中的set
set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。重复元素在set中自动被过滤。
要创建一个set,需要提供一个list作为输入集合:
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
还可以采用
add(key)方法添加元素、remove(key)方法删除元素。>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.remove(4)
>>> s
{1, 2, 3}
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集&、并集|等操作。
set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。
5.基础结构
1.条件判断
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
if x: #如果x为非零值
if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elif和else。
2.循环
(1)for...in循环
依次把list或tuple中的每个元素迭代出来。
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
Python提供一个
range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。>>> list(range(5))
[0, 1, 2, 3, 4]
(2)while循环
while xxx:
xxxxx
(3)break--提前结束循环
(4)continue--提前结束本轮循环,并直接开始下一轮循环。
3.函数
python内置了很多函数,如
max(x1,x2,x3,...)、abx(x)。def 函数名(参数):
函数体--具体功能实现
return x,y #Python可以返回多个值,Python的函数返回多值其实就是返回一个tuple
def nop(): #空函数
pass #占位符,什么也不做,相当于c语言的{}
参数部分了解位置参数、默认参数(默认参数必须指向不变对象!)、可变参数(*numbers)--tuple、关键字参数(**kw)--dict、命名关键字参数(*)--命名关键字参数必须传入参数名。
*args是可变参数,args接收的是一个tuple;
**kw是关键字参数,kw接收的是一个dict。
Python知识整理(一)的更多相关文章
- Python知识整理(三)
三.函数式编程与模块 1.函数式编程 1.高阶函数 把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式. 1.map/reduce map()函数接收两个参数,一个是函 ...
- Python知识整理(二)
6.高级特性--简化代码量 1.切片 L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3.即索引0,1,2,正好是3个元素. 如果第一个索引是0,还可以省略:L[:3] Python支持 ...
- Kali Linux渗透基础知识整理(四):维持访问
Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...
- NLTK 知识整理
NLTK 知识整理 nltk.corpus模块自带语料 NLTK comes with many corpora, toy grammars, trained models, etc. A compl ...
- python知识大全目录,想学的看过来!
Python总结篇——知识大全 python装饰器 PyCharm安装与配置,python的Hello World sort与sorted的区别及实例 我必须得告诉大家的MySQL优化 ...
- Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量 env:环境变量 常用系统变量: path pwd lang home his ...
- js事件(Event)知识整理
事件(Event)知识整理,本文由网上资料整理而来,需要的朋友可以参考下 鼠标事件 鼠标移动到目标元素上的那一刻,首先触发mouseover 之后如果光标继续在元素上移动,则不断触发mousemo ...
- Kali Linux渗透基础知识整理(二)漏洞扫描
Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...
- wifi基础知识整理
转自 :http://blog.chinaunix.net/uid-9525959-id-3326047.html WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总 ...
随机推荐
- 华为云计算IE面试笔记-请描述华为容灾解决方案全景图,并解释双活数据中心需要从哪些角度着手考虑双活设计
容灾全景图: 按照距离划分:分为本地容灾 同城容灾 异地容灾 本地容灾包括本地高可用和本地主备.(本数据中心的两机房.机柜) 本地高可用这个方案为了保持业务的连续性,从两个层面来考虑: ①一个是从主 ...
- C++: 基于四叉树数据结构的自适应网格(初探)
C++: 基于四叉树数据结构的自适应网格 二叉树是一种典型的非线性存储数据结构,查找效率可以达到\(O(log_2N)\),同样,这类树状结构存在许多种变体,详细参考邓俊辉老师的<数据结构C++ ...
- 带你读Paper丨分析ViT尚存问题和相对应的解决方案
摘要:针对ViT现状,分析ViT尚存问题和相对应的解决方案,和相关论文idea汇总. 本文分享自华为云社区<[ViT]目前Vision Transformer遇到的问题和克服方法的相关论文汇总& ...
- 日常学习用到的Git指令
Git 常用Git指令 (本地) git init - 将文件夹初始化为Git仓库 git add - 将工作区的指定文件放入暂存区 git status - 查看工作区和暂存区的状态 git com ...
- Java JDK的下载与安装!Java基础
在了解什么是Java.Java 语言的特点以及学习方法之后,本节将介绍如何搭建编写 Java 程序所需要的开发环境--JDK,只有搭建了环境才能敲代码! 学Java的都知道,JDK 是一种用于构建在 ...
- storm卡顿修改
最近的webstorm越来越卡了,有时候甚至会弹出 Out of memory的窗口,提示要设置 xmx的值, 8G内存跑你这小软件还会不够用???要内存?给你,看你还会不会卡成翔! 于是果断给x ...
- 题解 CF1172E Nauuo and ODT
题目传送门 题目大意 给出一个 \(n\) 个点的树,每个点有颜色,定义 \(\text{dis}(u,v)\) 为两个点之间不同颜色个数,有 \(m\) 次修改,每次将某个点的颜色进行更改,在每次操 ...
- 解决npm : 无法加载文件 D:\Code\renren-fast-vue\node_modules\.bin\npm.ps1,因为在......
解决这个问题: 看看错误信息: npm : 无法加载文件 D:\DevPath\nodejs\npm.ps1,因为在此系统上禁止运行脚本.有关详细信息,请参阅 https:/go.microsoft. ...
- 苹果应用内购 ios 开发者根据用户提供的邮件中的订单号查看该订单是否支付成功
苹果应用内购 ios 开发者根据用户提供的邮件中的订单号查看该订单是否支付成功 这是苹果wwdc2021 推出的新功能 参考官网链接 App Store Server API | Apple Deve ...
- 【Azure Developer】如何验证 Azure AD的JWT Token (JSON Web 令牌)?
问题描述 使用微软Azure AD,对授权进行管理.通过所注册应用的OAuth API(https://login.chinacloudapi.cn/{TENANT ID}/oauth2/v2.0/t ...