python学习笔记

python学习笔记

1、基础知识

数据类型:integer(int) string (str) float (浮点数) long  list  dictionary      tuple  set boolean

变量=定义的变量可以不确定变量类型,只有使用的时候,才会确定变量类型(java 不同)

命名规范:1、不能使用数字开头,2、不能过长(一般可以根据内存长度确定,所以无限制) 3、不能包含除——之外的特殊字符

4、应该有意义(方便阅读) 5、用下划线分割多个单词的命名(可读性,不强制) 6、一般变量名全部小写,作为常量使用时,才全部大写

7、避免使用小写的l和大写 的o(可读性要求,不强制)

运算符:

支持加法、减法、乘法、除法、取反、绝对值、求幂(math方法有其他运算)

运算的优先级(按照数学元算进行)

逻辑

1、if else    真假的判断:integer 如果值为0,float值为0.0 long的值为0,string的值为"",list的值为[],dictionary的值为{},tuple的值为()则为False,其余为真

2、循环 for  while

range()函数,生成数字。range(10)-----生成 [0,1,2,3,4,5,6,7,8,9]

range(1,4)--- 生成[1,2,3]

range(1,6,2)--生成[1,3,5]

for 循环  for i in range(3):

语句:

遍历列表  for cat in cats:

语句:

继续执行下一个遍历  continue    退出循环  break ;

for语句在执行完遍历之后。变量的值为最后一次遍历的值。

while 条件:

语句

无限循环需要在合适的位置设置break语句,不然,程序会一直执行下去;

3、顺序--------

字符串的使用

1、打印:print 语句会自动换行,如果不想换行,则在print语句结束时,输入","就不会换行了

2、string的方法 len()---自符串长度函数    str.upper-------把所有字母转换成大写;str.lower----全部小写

str.capitalize()  字符串首字母大写,其余小写  str.title()----首字母以及每个空格或者标点符号后的字母转换成大写,其他字母小写

str.is_alpha()-------------检查字符串是否全部有字母组成,str.is_digit()------检查字符串是否全部有数字组成

str.strip() 去掉字符串中开头或者结尾的某个值(没有参数则为空格,有参数则为该参数)

相同的方法---str.rstrip()---删除末尾的某个值    str.lstrip()------删除开头的某个值

字符串 的加法和乘法 支持,不支持除法和减法

str.count("x")---查找字符串中某个字符出现的次数

str.find("x")-----查找字符串中某个字符第一次出现的位置(没有该字符则返回-1)

str.replace("x","x1")---------用x1代替字符串中出现的所有的x

type(x)-----查看x的数据类型

获取输入和处理输出

获取输入:input()--------    用于收集信息,用户输入的任何内容都将按照实际内容保存,比如输入5,则为int,

输入5.0 ,则保存为浮点数,输入"你好",则保存为string型,不能保存没有用""括住的字符串

raw_input()----收集任何非数字的信息,例如输入5 则保存为str("5");

密码的输入使用getpass模块      f=getpass()  会自动隐藏输入

使用format()函数或者%来格式化输出  例子

print("你好,s%",%())

print("你好{},你多大了".format("李敏"))

list(列表)

含义:一系列事务的组合

1、创建列表  list=[](空列表)

2、列表的第一项编号是0,及list[0]

方法:len(list)

list.count("value")列表中某个值的出现次数

list.index("value")列表中某个值的在泪飙中第一次出现的索引位置,如果没有该列表,则返回错误;

value in list :某个值是否在列表中

以下方法会改变列表的内容:

list.append("value"):添加某个值到列表末尾

list.extend(list1):添加某个list到另一个list的末尾  支持"+"加法,列表支持乘法:list*n

list[index]='value':修改某个值

list.remove("value"):删除某个值,其他项向前移动一位,没有则报错

list.insert(index,"value"):在指定位置添加一个列表项--该方法效率较低

list.reverse()--反转列表

list.sort()----按照字母顺序或者按照数字升序排列列表  https://www.cnblogs.com/sunny3312/archive/2017/01/07/6260472.html

list1==list2 :比较列表,如果完全相同,则为True,如果不完全相同则为False

切片操作:

[start:end:step]--start 其实索引,从0开始,-1结束  end ---结束索引  step---步长,为正,从左向右取值,为负,反向取值

切片的结果不包含结束索引的值

如下变种:[::]====默认所有

[:]===省略全部,所有值

[:3]===省略起始位置索引以及步长。取从开始到第三个的值

[::-1]===步长为1,从右向左取值。可以认为是反转原列表

list()函数====可以把tuple()或者list转换成list  实例:list((1,2))====[1,2];list([1,2])====[1,2]

函数:

创建函数:格式:def function_name(parameter1,parameter2):

code

code

return==================该语句是调用函数后会返回的值,如果缺少,返回值为null

函数的调用  :function_name();  如果直接输入函数的名称,实际得到的是函数的内存地址

函数可以设置别名,比如 abs函数可以设置为a=abs,a(-1)=>>>1;

参数的类别:默认参数====调用函数时可以不用传值的参数,默认参数必须在必选参数之后,不然函数不知道默认值是哪个参数的;

默认参数有多个时,调用函数会按照函数定义的顺序进行,也可以根据参数名=值 来进行判断

需要注意的一点:默认参数必须指向不变对象!不然会出现默认值改变的现象

可变参数====参数数量不固定,定义格式  def function_name(*params):

语句;

实例:

def calc(*number):

sum=0

for n in number:

sum=sum+n;

return sum

print calc(1)  #>>>>1

print calc(1,3,4)#>>>>8

list=[1,2,3,4]

#print calc(list)  >>>>unsupported operand type(s) for +: 'int' and 'list'

print calc(*list) #>>>>10

print calc(list[0],list[1],list[2],list[3]) #>>>>10

tuple=(2,3,4,5)

#print calc(tuple) #>>>>unsupported operand type(s) for +: 'int' and 'tuple'

print calc(*tuple) # >>>14

关键字参数====可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。

而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict

定义格式:def person(name, age, **kw):

语句:

调用:person("Name","age",city="北京");

或者person("Name","age",**dict)====dict={"city":"beijing","grade"}

**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict,

注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra

命名关键字参数==对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数。

至于到底传入了哪些,就需要在函数内部通过kw检查。

如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数。这种方式定义的函数如下:

实例:

def person(name, age, *, city, job):

print(name, age, city, job)

和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。

命名关键字参数必须传入参数名,这和位置参数不同。

如果没有传入参数名,调用将报错:TypeError: person() takes 2 positional arguments but 4 were given

如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:

实例:

def person(name, age, *args, city, job):

print(name, age, args, city, job)

使用命名关键字参数时,要特别注意,如果没有可变参数,就必须加一个*作为特殊分隔符。

如果缺少*,Python解释器将无法识别位置参数和命名关键字参数

参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

函数定义中,如果没有return则调用函数时,会返回NOne。

实例:

def product(*args):

sum=1

if len(args)>0:

for arg in args:

sum=sum*arg

return sum

else:

return ("请输入至少一个参数")

print(product(1,3,4))

print (product(*(2,3,4)))

print(product(4))

print(product())

高阶函数:

1、变量可以指向函数====例子:f=abs>>>>f(-10)=>>>10

2、函数名可以是变量 ===例子  abs=10>>>>abs(-10)>>>>typeError: 把abs指向10后,就无法通过abs(-10)调用该函数了!因为abs这个变量已经不指向求绝对值函数而是指向一个整数10

定义:一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数;函数式编程就是指这种高度抽象的编程范式。

内建高阶函数:

1、map()====map()函数接收两个参数,一个是函数,一个是Iterable,

map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

实例:def f(x):

return x*x

list=[1,2,3,4,5,6]

list2=map(f,list) #f指的是函数对象本身,如果使用f(x),则会报错:x 未定义;

print list2

2、reduce()====reduce()函数把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,

reduce把结果继续和序列的下一个元素做累积计算;例如 加法和累乘;

实例:def chr2int(s):

return {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}[s]

def fn(x,y):

return 10*x+y

def str2int(s):

return reduce(fn,map(chr2int,s))

print (str2int("13456"))#>>>>13456(int类型的)

3、filter()=====filter()函数也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,

然后根据返回值是True还是False决定保留还是丢弃该元素。过滤函数。

实例:def not_empty(s):

return s and s.strip()

list(filter(not_empty, ['A', '', 'B', None, 'C', '  ']))=====和filter(not_empty,['A',"",'B',None,'C',' '])没有区别

#注释布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。

#filter()函数返回的是一个Iterator,所以需要使用list()函数(是一个转换函数,而不是list[])

完成计算并获取结果;https://www.cnblogs.com/spiritman/p/5158331.html迭代器的使用及特点。http://blog.csdn.net/u012671171/article/details/42169843 yield的讲解;

4、sorted()=====sorted()函数接受一个序列和key函数,返回按照规则的排序;

sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序;

ey指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序.如果反转,只要reverse=True 即可;

sorted()也是一个高阶函数。用sorted()排序的关键在于实现一个映射函数。

实例:>>> sorted([36, 5, -12, 9, -21], key=abs)

>>>[5, 9, -12, -21, 36]

异常处理:

第一种异常逻辑

try:

语句

except 错误名:

语句

except 错误名:

语句

else:

语句

流程:先执行 try 语句,如果出现了异常,则判断异常的类型,执行相应的except (不再执行else语句了),如果没有则抛出异常,停止执行程序,如果没有异常,

则执行else语句;

在except的错误语句中,需要把范围小的放在前面,范围大的放在后面,才会有效果,不然,后面的错误类型一直不会执行到;

变种:except可以不带错误名,只有语句,或者错误名可以是多个(Exception1[, Exception2[,...ExceptionN]]])均可

第二种异常逻辑:

try:

语句

finally:

语句

不管try语句是否执行,都会执行finally语句

实例:

def f():

try:

print 1

return 1

except:

return 2

else:

print 3

return 3

finally:

print 0

#return 0

执行结果:结果为 1 0 1

说明try里面运行完之后return,阻挡了else的执行,但是并没有影响finally的执行。

借用Vamer文章的两句话:

“如果try中没有异常,那么except部分将跳过,执行else中的语句,但是如果try中有return,则结束运行。

finally是无论是否有异常,最后都要做的一些事情。”

这里补充一句,在含有return的情况下,并不会阻碍finally的执行。

第三种处理方式:

使用raise 触发异常

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 198,030评论 5 464
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,198评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 144,995评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,973评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,869评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,766评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,967评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,599评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,886评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,901评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,728评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,504评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,967评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,128评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,445评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,018评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,224评论 2 339

推荐阅读更多精彩内容