Python必晓知识点-精简实用【Python之执行py文件】1、在cmd/shell中输入命令pythona.py2、在解释器中,通过函数execfile("a.py")3、在解释器中,直接输入程序语句立即执行【Python之退出解释器】1、>>>importsys>>>sys.exit()2、通过引发异常:raiseSystemExit3、输入EOF字符,windows下是Ctrl+Z,unix下是Ctrl+D-----------------------------------------------------【Python之数据类型】:在python中有4种类型的数-整数,长整数,浮点数和复数-----------------------------------------------------【Python之函数】:deffoo(p1,p2,....):1、Python函数定义不需要头文件2、Python函数定义不需要指定返回值的类型,你要麽returnvalue,要麽让函数自己returnNonePython的NULL值)3、Python中变量和函数参数都不需要指明类型,根据它们得到的值,Python会自己维护它们的类型4、Python语言没有子程序或过程(VB中的sub),统统的一切都只是函数5、文档字符串“““docstring”””必须在函数的第一个逻辑行被定义,文档字符串同样也适用于模块和类6、调用函数时,可以通过形参位置和形参名称两种方法来给函数传递实参7、pass语句在pyhon中表示一个空的语句块8、调用函数时会为局部变量引入一个新的符号表。所有的局部变量都存储在这个局部符号表中。9、引用参数时,会先从局部符号表中查找,然后是全局符号表,然后是内置命名表。因此,全局参数虽然可以被引用,但它们不能在函数中直接赋值(除非它们用global语句命名)0、用户定义的函数名也是一个解释器认可的类型值。这个值可以赋给其它变量,使其能做为一个函数来使用【Python之lambda函数】:本质上lambda可以有任意数目的参数,冒号后面仅跟单个表达式作为函数体定义:foo=lambdax:expression相当于deffoo(x):expression调用:foo(y)或直接(lambdax:expression)(y),x形参,y实参1、lambda函数不能包含任何命令,而且只能包含一句表达式2、lambda并没有必须要使用它的理由,使用它仅是一种风格-----------------------------------------------------【Python之模块】1、导入模块名用importmodule_name;导入模块中的一个子项目用frommodule_nameimportxxx2、访问模块内部的函数,类以及各种属性3、要导入的模块应该被放置和调用它的程序相同的目录中,或者在sys.path变量所列目录之一4、当你要导入一个模块时,Python会依次在这些目录里寻找与你要导入的模块名称一致的py文件5、并不是所有的模块都是以py文件存在的,比如内置模块,它们的py源代码并不可见,因为它们不是用python写成的6、每个模块都有__name__属性,当模块是被导入使用时,它的值为模块名;而当模块是被直接运行时,它便是__main__【Python之对象】1、字符串是对象,链表是对象,函数是对象,模块也是对象2、Python中对象的定义较宽松,即只要能赋予变量,或作为参数传递给函数的都能被视为对象3、当你将一个对象赋予一个变量的时候,这个变量仅仅是这个对象的参考,也就是说,变量名指向存储这个对象的内存:所以当你把a链表赋给b链表的时候,你只是创建了另一个索引,而对其中任何一个的更改都会影响到另一个:如果你不想冒此风险,就必须通过切片b=a[:]来完全复制一个链表再赋给b,这样对a的更改就不会影响到b-----------------------------------------------------Python中每个语句以换行结束,若要在一行中写多个语句,这时语句之间必须使用用分号分隔Python语言使用缩进块来表示程序逻辑(其它大多数语言使用大括号等)Python并未指定缩进的空白数目,唯一的要求是同一层次的语句必须有相同的缩进空白(注意,要么都是空格,要是么都制表符,千万别混用)【Python之控制结构】-其中,1、2、3语句后都需要带冒号:1、if语法为ifelifelse2、for对于任何序列都适用,逐一使用序列中的每个子项目3、while4、break与C中的作用相同,用于跳出最近的一级for或while循环5、range()生成一个等差级数链表6、continue与C中的作用相同,用于继续执行下一次迭代6、else子句在循环结束后(for)或条件为False(while)时执行,但循环被break中止的情况下不会执行7、pass语句pass语句什么也不做,它用于那些语法上必须要有什么语句,但程序上什么也不要做的场合-----------------------------------------------------【Python之数据结构】-----------------------------------------------------【Python之字典】:无序集合,所以无法像链表那样,根据排列序号来索引元素或索引切片创建:dict={1:35,2:"nice","key":"ugly"}索引:dict[1]#35wasacquired修改:dict[1]=36#35replacedby36添加:dict[3]=47#pair(3:47)wasadded删除:deldict[1]#pair(1:35)wasdeleted0、你只能使用不可变的对象(比如字符串)来作为字典的键1、记住字典中的键/值对是没有顺序的。如果你想要一个特定的顺序,那么你应该在使用前自己对它们排序。2、youcangetvaluesbykey,butyoucan'tgetkeysbyvalue4、字典中不能含有重复的键,对一个已存在的键赋值,只是简单地将原来的值替换5、任何时候,你都可以向字典添加新的key-value对,但新添加值的出现位置是随机的6、字典的元素之间没有顺序的概念,它们之间的排列完全是无序状态7、字典的键是有大小写之分的,更重要的是字典的键是immutable的,所以它只能使用同样是immutable的类型8、键的数据类型可以为字符串型,整型,tuple,list不行;而值可以是任何数据类型,包括字符串,整数,对象,甚至字典9、字典的元素删除可以通过deldict["key1"];字典的清空可以通过dict.clear()->{}仍是字典0、keys()返回一个无序的、包含所有键的链表;values()返回一个有序的、包含所有值的链表;items()返回一个由tuple(key,value)组成的链表;-----------------------------------------------------【链表<-->字符串】:str="_".join(str_list),把str_list内的每个元素都用‘_’连接成一个字符串:list=str.split("_"),在str中每遇到一个‘_’就切开,并将分离的字符串作为链表的一个元素【Python之字符串】:这里没有像C里的字符类型,单个字符仅仅是长度为一的字符串:python字符串不能被改写,按下标或切片赋值均会失败:单引号''和双引号""字符串是完全相同的,它们没有在任何方面有区别:在单引号字符串中可直接使用双、三引号,在双引号字符串中可直接使用单引号,在三引号中可自由使用单、双引号:在单,双引号字符串中使用同类引号,可以通过转义字符\实现:三引号""""""中的字符串被解释器打印出来的结果与它们输入的形式完全相同:内部的引号,用反斜杠标识的引号和各种怪字符,都精确的显示出来。:自然字符串通过在字符串前加r或R来指定;unicode字符串通过在字符串前加u或U来指定:字符串可以用+号联接,也可以用*号循环,但e='ab''cd'这种方式只对字符串值有效【Python之链表】:有序集合创建:list=[1,2,"a","b","mac"]元素索引:list[4]->'mac'或list[-1]->'mac',负索引公式list[-n]=list[len(list)-n]切片索引:list[1:3]->[2,'a','b']或list[-4:3]->[2,'a','b']快捷切片:list[:n]->从开始到list[n-1];list[n:]->从list[n]个开始到结束修改:list[n]=0;list[m:n]=[1,2.....]添加:不能像字典那样直接添加,因为链表是有序排列,需要位置信息,list.append(),list.insert(),list.extend([])搜索下标:list.index("mac")->4,它只返回要搜索的元素在链表中第一次出现的位置删除:list.remove(element),它只删除第一个element的存在,不止一个存在的话就需要多次执行0、链表可以包含任何数据类型!1、测试某个元素是否在list中,用in,如”mac"inlist,根据结果它会返回True或False2、insert()的参数可以是单个元素,也可以是一个list,当是一个list的时候,父list的长度只加13、extend()的参数只能是一个list,加上去之后父list的长度是随着子list的长度而相应增长的4、pop()做两件事,删除最后一个元素的同时返回该元素5、list=list+otherlist得到的结果与list.extend(otherlist)同,但是+形成一个新的链表,而extend只是在原来的链表上动态增长,所以extend的速度更快,特别是对于大的链表6、list+=otherlist与extend同等7、用于链表的*操作符是个起到重复的功能8、链表的映射是将一个序列(list,tuple,dict)映射为另一个list,所以整个表达式要用[]包含,比如listb=[a*2forainlista]【下标索引※切片索引】:链表、tuple和字符串都是序列,是序列就支持下标和切片索引:字符串可以用下标查询,但如果超过了索引范围,就会出错:切片操作符s[a:b],a是闭环,b是开环,即返回的结果包含a,但不包含b:要想包含最好一个元素,则冒号:后空着,不要指定b:如果不指定第一个数,就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。:返回的序列从开始位置开始,刚好在结束位置之前结束。即开始位置是包含在切片中的,而结束位置被排斥在切片外:四种情况下,切片索引将返回空字符串(假设a="lucky")1,下界超出上界,如a[3:1]或a[-1:-3],但有种情况例外,如a[1:-1]2,上界等于下界,如a[0:0]或a[-1:-1]3,上下界均右溢,如a[10:100]4,上下界均左溢,如a[-100:-10]【Python之Tuples】可以包含数字,字符串,链表,字典和另一个t