python基础笔记(⾮系统⾃⽤参考⼩甲鱼的零基础⼊门学习
python)上
---恢复内容开始---
1.原始字符串的使⽤,在字符串前加r就⾏(⽤于对\进⾏⾃动转译)
>>>str = r'C:\now\wifr'
'C:\\now\\wifr'
但在字符串后⾯不能有空的'\'
>>>str = r'C:\now\wirf\'
error
长字符串的使⽤,⽤""" """将字符串包起来
>>>str = """ xsf,
xfasf,
sdasdas"""
'xsf,\nxfasf,\nsdasdas\n'
(会⾃动给回车处加\n)
2.isinstance(变量,类型):⽤于判断该变量是否为该类型,返回t/f
id(变量名):⽤于查看变量的地址
dir([]):不带参数时,返回当前范围内的变量、⽅法和定义的类型列表;带参数时,返回参数的属性、⽅法列表
3.在变量命名时,不能与系统BIF重名,否则会时原BIF函数⽆法使⽤
4.python2版本整形除法‘/’采⽤地板规则,向下取整,python3版本则保留⼩数,有‘//'运算负责采⽤地板规则,‘**’为幂运算(eg:2**3=8)
5.幂运算符,⽐起左侧的⼀元运算符优先级⾼,⽐起右边的⼀元运算符优先级低(eg: -3**2=-9 => -<*
* =>-(3**2) 3**-1=1/3 => **<- =>3**(-1))
(⼀元操作符:只有⼀个操作数的运算符⼆元操作符:两个操作数)
6.python允许a<b<c 等同于 (a<b) and (b<c),其他语⾔则不允许
7.运算符优先级:**>正负>加减乘除>⼤于⼩于等于>and or not
8.python允许esif(等同于else if )if else 搭配⽐多个if好
9.python的三元操作符: x if 布尔 else y 等同于C的布尔?x:y
10.断⾔assert:当assert关键字后边的条件为假的时候,程序⾃动崩溃并抛出AssertionError异常
>>>assert 3>4
AssertionError
作⽤:⼀般来说我们可以⽤该关键字在程序中置⼊检查点,当需要确保程序中的某个条件⼀定为真才能让程序正常⼯作的话,assert关键字就⾮常有⽤了
11.python的for循环可以直接调⽤迭代器的next⽅法,会⾃动的捕获stoplteration异常,⾃动结束循环
语法:for 变量 in 表达式(也可以是⽂件):
循环体
eg:>>>for i in 'wocao':
print(i,end = ' ')
w o c a o
for常与range(start,stop,step)搭配(start(可有可⽆,⽆则从零开始)到stop-1,step是间隔,step为2,则类似1,3,5.。。)
eg:>>>for i in range(5):
print(i)
0/n1 (4)
12.列表(跟数组差不多,但可混可空)。添加可⽤append()只能添加⼀个eg:列表名.append(xxx);也可以⽤exend([,]),可添加多个eg:列表名.extend([xxx,xxxx])。指定位置添加⽤insert(添加位置,添加内容)。
删除⽤remove(具体内容),或del 列表名[下标](del也可直接将整个列表删除);因为python的列表是⽤栈(数据结构)来存储的,所以也可以⽤pop(索引可有可⽆)来将栈顶(列表最后)元素弹出
列表分⽚:列表名[x:y];列表与列表的⽐较:以⾸元素为准;列表*int:将列表复制3次存进列表中;判断元素是否在列表中,⽤in(只能判断同⼀层) eg:xxx in listname 返回t/f,对于listname[xxx,[xxxx,xx],x] xxxx in listname return False | xxxx in listname[1](嵌套列表所在下标) return True
列表复制:1. listname1=listname[:](分⽚) 两个指向不同的内存地址,只是内容⼀样,所以原列表改变不影响listname1
2. listname2=listname 两个指向同⼀个内存地址,当原列表发⽣改变时,listname2也会改变
13.元组tuple(不可变位,不可重新赋值的list):声明⼀个元组,tuplename=(,,,,)关键是',' tuplename=8, 元组 tuplename=(8) int 2* (8)=16 2*(8,)=(8,8)
添加元素(通过切⽚的⽅式):tuplename=tuplename[:添加位]+(添加的元素,)+tuplename[添加位:]
14.字符串拼接⽤+,并不是改变原来的字符串,⽽是将拼接后的字符串贴上⼀样的标签,原来的字符串会被释放
15.判断字符串是否为数字可⽤isdigit()、isnumeric()、isdecimal()⽅法,三者的区别如下
isdigit()
True: Unicode数字,byte数字(单字节),全⾓数字(双字节),罗马数字
False: 汉字数字
Error: ⽆
isdecimal()
True: Unicode数字,,全⾓数字(双字节)
False: 罗马数字,汉字数字
Error: byte数字(单字节)
isnumeric()
True: Unicode数字,全⾓数字(双字节),罗马数字,汉字数字
False: ⽆
Error: byte数字(单字节)
16.format()⽅法
17.声明函数:def func_name(xxx='默认值可有可⽆',xxxx='默认值可有可⽆',*xxxxx可变(参数个数⽆限,原理是打包成元组)参数):
'xxxxx函数⽂档,⽤func_name.__doc__可调出来看,不调⽤则不显⽰'
#注释
函数体
*args为任意的参数,通过下⾯代码将这些参数写进列表中
关键词参数:在调⽤函数时,传参使⽤形参名='实参' 可避免实参顺序错乱导致结果与预期不符 eg:func_name(name='⽐企⾕彩
⽻’,xxx='xxxx')
python可以返回多个值(以列表或元组的形式)
18.过程:没有返回值的函数
19.在试图在函数内部修改全局变量时,python隐蔽机制会在函数中创建⼀个名字⼀模⼀样的局部变量,从⽽使修改的结果是修改了局部变量,全局变量不变
但可以通过global关键字在函数内修改全局变量
20.内部函数(嵌套函数):在函数体⾥⾯再声明⼀个函数,在外层函数体内可以任意的调⽤内部函数,但出了外层函数,则不能对内部函数直接进⾏调⽤
21.闭包:闭包是由函数及其相关的引⽤环境组合⽽成的实体(即:闭包=函数+引⽤环境)(想想Erlang的外层函数传⼊⼀个参数a, 内层函数依旧传⼊⼀个参数b, 内层函数使⽤a和b, 最后返回内层函数)
.
将外层函数看为全局,则在外层函数⾥声明的变量对于内层函数来说就相当于全局变量,所以试图在内层函数修改外层函数变量时,python 会将外层变量屏蔽起来,系统就会报错:
解决⽅法:python3之后,可以同过nonlocal关键字来解决,⽽python2则需同过将外层函数变量声明成容器(list,tuple,str,...),因为容器不是存放在栈⾥⾯
容器:nonlocal关键字:
22.匿名函数:使⽤lambda关键字声明函数,调⽤时直接赋值给某个变量就⾏,当匿名函数不使⽤时,python的垃圾回收机制会将该函数清理掉
其中x为参数,参数可有多个
23.两个值得认识的BIF:过滤器filter(function or None,iterable迭代器列表之类的)将迭代器中True的抽取出来
⾃⼰写过滤规则,下⾯的是将偶数过滤
function参数只需将函数名传给filter(),左=右
映射map(function,iterable)将iterable根据function进⾏加⼯,eg:
24.python系统默认的递归(recursion)深度是100层,想要⾃定义递归深度,需
python新手入门基础语法>>>import sys
>>>sys.setrecursionlimit(deepth)
25.字典dict(key->value):字典的标志性符号为{ } eg:
dictname = {key1:value1, key2:value2,...}
声明之后就可以通过key来索引对应的value:x = dictname[key1] ==> x == value1
字典常⽤⽅法:
fromkeys(...) --> dict.fromkeys(S[,v]) -> new dict with keys from S and values equal to v(v defaults to None)
keys() --> dict.keys() 将字典中的key抽出来,常⽤于for --> for each in dictname.keys()
values() -->dict.values() 将字典中的vaules抽出来,常⽤于for --> for each in dictname.values()
items() -->dict.items() 将字典中的(key,value)组合抽出来,常⽤于for --> for each in dictname.items()
keys():values():items():
get()--&(key)获取value,⽐直接dict[key]灵活,当dict[key]不存在时系统会报错,⽽get(key)则会返回⼀个None来免程序报错
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论