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协议中比较常见的知识做一个基本的总 ...
随机推荐
- bzoj3729-Gty的游戏【Splay,博弈论】
正题 题目链接:https://darkbzoj.tk/problem/3729 题目大意 给出\(n\)个点的一棵树,第\(i\)个节点上有\(a_i\)个石子,然后每次可以选择不超过\(L\)个石 ...
- YbtOJ#832-鸽子饲养【凸包,Floyd】
正题 题目链接:https://www.ybtoj.com.cn/contest/116/problem/3 题目大意 给出两个大小分别为\(n,m\)的点集\(A,B\). 求出\(B\)的一个最小 ...
- PHP审计之class_exists与任意实例化漏洞
PHP审计之class_exists与任意实例化漏洞 前言 发现PHP的一些漏洞函数挺有意思,跟着七月火师傅的文章来学习. class_exists函数 函数说明 class_exists:(PHP ...
- 洛谷2543AHOI2005]航线规划 (树剖+线段树+割边思路)
这个题的思路还是比较巧妙的. 首先,我们发现操作只有删除和询问两种,而删除并不好维护连通性和割边之类的信息. 所以我们不妨像WC2006水管局长那样,将询问离线,然后把操作转化成加边和询问. 然后,我 ...
- 在IDEA中创建SpringBoot项目01
1.选择创建项目 2.填写项目信息 3. 4. 5.Finish后会下载,之后生成目录结构: 6.在自己的包目录结构下添加了Controllr和Entiy测试项目: Controller: 1 pac ...
- iOS自动化之WDA(WebDriverAgent)安装
1.WDA介绍 WebDriverAgent 在 iOS 端实现了一个 WebDriver server ,借助这个 server 我们可以远程控制 iOS 设备.你可以启动.杀死应用,点击.滚动视图 ...
- Python内置高阶函数map()
map()函数map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 例如,对于lis ...
- props&attrs provide inject
defineComponent({ props: {// 1 } setup (props, {attrs, emit}) { } }) 一,组件传值: 父传子: 1.如果没有在定义的props中声明 ...
- sqlmap--tamper使用技巧
apostrophemask.py 适用数据库:ALL 作用:将引号替换为utf-8,用于过滤单引号 使用脚本前: tamper("1 AND '1'='1") 使用脚本后: 1A ...
- 【二食堂】Alpha - Scrum Meeting 3
Scrum Meeting 3 例会时间:4.13 12:00 - 12:30 进度情况 组员 昨日进度 今日任务 李健 1. 继续学习前端知识,寻找一些可用的框架.issue 1. 搭建主页html ...