当前位置: 首页 > 后端技术 > Python

python基础知识

时间:2023-03-26 11:21:18 Python

[toc]

把python的每一篇文章都编码好。
1.基本语法1.1注意在写代码的时候,有些代码不需要执行或者添加代码说明,这时就需要使用注释了。注释的文本或代码将不会被执行。注释可以使用以下三种方式:#号#第一种注释,这行代码不会运行print("helloworld!")#第二种注释'''三个单引号也叫块注释,支持换行符。'''第一行注释,这行代码不会运行第二行注释,这行代码不会运行第三行注释,这行代码不会运行'''print('helloworld!')"""三个双引号也叫块注释,支持换行。"""第一行注释,这行代码不会运行第二行注释,这行代码不会运行第三行注释,这行代码不会运行"""print('helloworld!')1.2转义符常用转义符:转义符描述\(行尾)continuation\反斜杠()`单引号(')"doublequote(")nnewlinerEntertTabkey(TAB)attheendoftheline,forcontinuation>>>print("www\.python.\org")#outputwww.python.org''\\",两个反双斜杠,转义为1个反斜杠\异常结果示例:>>>str='c:\windows\note'>>>print(str)#outputresult:'\n'isusedasanewline,才会出现下面的情况:c:\windowsoteNormalr结果示例:#将'\n'改为'\\n'解决>>>str='c:\windows\\note'>>>print(str)#修改后的输出结果:c:\windows\note1.3缩进严格约定使用4个空格和一个制表符(tab)作为缩进,切记不要混用,否则会报错IndentationErrordeffun():print('helloworld')print('helloworld')1.4标识符标识符的本质是一个特定数据结构对应的值。因为值不能被程序员直接访问,需要调用标识符来访问。标识符格式定义要求:由字母(a~z)、数字(0~9)、下划线(_)组成;它不能以数字开头;它不能与python的内置名称相同;字母的大小是敏感的;不能用中文,也不推荐用拼音
一切都作为标识符。
标识符错误示例:#报告语法错误,标识符不能以数字开头>>>123='123'File"",line1SyntaxError:can'tassigntoliteral#报告语法错误,类它被python语言类使用,不能用作标识符>>>class='abc'File"",line1class='abc'^SyntaxError:invalidsyntaxreservedidentifierFALSEawaitelseimportpassNonebreakexceptinraiseTRUEclassfinallyisreturnandcontinueforlambdatryasdeffromnonlocalwhileassertdelfiieldlobalnotwithasylanguageisdynamictypelanguage,strongly键入的语言。动态编译语言不需要事先声明数据类型,可以随意赋值其他数据类型;如果在编程时不知道类型,则很难推断。这也是python的一个缺点。V3.8严格在这里进行改进;#identifier随意切换数据类型x=123#定义x为整数x='123'#定义x为字符串在强类型语言中不同类型之间赋值变量时,需要显式(强制)进行类型转换>>>x=123#定义x为整数>>>y='456'#定义y为字符串#报类型错误,不同类型不能相加>>>print(x+y)Traceback(最近调用last):File"",line1,inTypeError:unsupportedoperandtype(s)for+:'int'and'str'#重新强制修改为同一类型>>>print(str(x)+y)1234561.6运算符1.6.1算术运算符常用算术运算符:加法(+)、减法(-)、乘法()、除法(/)、四舍五入(//)、取模(%)、幂(*)加(+)例子:>>>test=1+1>>>print(test)#输出结果如下:2减(-)例子:>>>test=1-1>>>print(test)#Output结果如下:0乘以(*)例子:>>>test=1*1>>>print(test)#Theoutput结果如下:1除以(/)例子:>>>test=4/2>>>print(test)#输出结果如下:2.0#结果为浮点型备注:注意python2.x//和//都是四舍五入的。四舍五入(//)示例:解释:也称为向下舍入、底除法(四舍五入到较小的值)>>>test1=5//2>>>test2=-5//2>>>print('test1result:',test1)>>>print('test2result:',test2)#输出结果如下:test1result:2#实际结果为2.5,接近2,所以取结果2test2:-3#实际结果是-2.5,接近-3,所以取-3的模(%)例子:如果都是正数,那么余数和模都是余数,但是要特别注意支付给使用正负数,这需要一个公式:*modulus*=x%y=x-[x//y]*y>>>test1=5%3>>>test2=-5%3#modulus=-5%3=(-5)-[-5//3]*3=(-5)-(-2)*3=-5+6=1>>>test3=5%-3#modulus=5%(-3)=5-[5//(-3)]*(-3)=5-(-2)*(-3)=5-6=-1>>>test4=-5%-3#modulovalue=-5%(-3)=-5-[-5//(-3)]*(-3)=-5-(1)*(-3)=-5+3=-2>>>print('test1结果:',test1)>>>print('test2结果:',test2)>>>print('test3结果:',test3)>>>print('Theresultoftest4:',test4)#输出结果如下:test1的结果:2test2的结果:1test3的结果:-1test4的结果:-2power(**)例子:>>>test=2**2>>>print('testsresult:',test)#输出结果如下:testresult:41.6.2bitoperatorbitand(&),位或(|),异或(^),左移(<<),右移(>>)计算机的语言它是用0和1表示的二进制,位运算也是用二进制计算的。下面的例子使用下面两个标识符进行计算:x=18#10转为二进制:00010010y=20#10转为二进制:00010100位与(&)例子:说明:位与(&)的计算在二进制中,两位都为1,得到1,否则为0>>>x=18>>>y=20>>>print('x&yresultis:',x&y)#输出结果如下:x&y结果为:16-bitor(|)解释:bitor(|)是以二进制计算的,如果两位之间有一个1,则为1,否则为0>>>x=18>>>y=20>>>print('x|yresultis:',x|y)#输出结果如下:x|yresultis:22XOR(^)说明:异或(^)是基于二进制计算的。两个位都有1和0,一个1和1,其他都是0>>>x=18>>>y=20>>>print('x^y的结果是:',x^y)#输出结果如下:x^y结果为:6左移(<<)左移(<<)是整体向最高位(左)移位。>>>x=18>>>y=20>>>print('x左移1位的结果为:',x<<1)>>>print('x左移2位的结果y的左边是:',y<<2)#输出结果如下:x左移1位的结果是:36y左移2位的结果是:80右移(>>)右移(>>)是整体最低位(右)的移位数。>>>x=18>>>y=20>>>print('x右移1位的结果为:',x>>1)>>>print('y右移2位的结果bitsis:',y>>2)#输出结果如下:x右移1位的结果为:9y右移2位的结果为:51.6.3比较运算符Common比较运算符:等于(==)、不等于(!=)、大于(>)、大于等于(>=)、小于(<)、小于等于(<=)、返回结果为布尔(bool)类型。比较操作只能用于相同数据类型的比较(==和!=除外),例如:与数值类型的比较、与字符串的比较等。>>>x='18'>>>y=20>>>print('比较结果为:',x>>x=18>>>y=20>>>print('比较的结果是:',x==y)#输出结果如下:comparison结果为:False不等于(!=)例子:>>>x=18>>>y=20>>>print('比较结果为:',x!=y)#输出结果如下:Compared结果为:True大于(>)例子:>>>x=18>>>y=20>>>print('Theresultofthecomparisonis:',x>y)#输出结果如下:比较结果为:False大于等于(>=)例子:>>>x=18>>>y=20>>>print('Thecomparisonresultis:',x>=y)#输出结果如下:比较结果为:False小于(<)例子:>>>x=18>>>y=20>>>print('比较结果为:',x>>x=18>>>y=20>>>print('比较结果为:',x<=y)#输出结果如下:比较结果为:True1.6.4逻辑运算符常见逻辑运算符:and(与)、or(或)、not(非)逻辑运算符不一定返回布尔值type(bool),例如:1and'abc'returns'abc'另外,先提前了解False对象如下,比较容易理解:
</center>and(and)例子:说明:所有条件为真(True),返回结果为真,否则为假(False)x=1y=-1#负对象全部为真(True)ifxandy:print('xandyarebothtrue')else:print('xandyisfalse')#输出结果如下:xandyarebothtrue#######################################x=1y=''#如果x和y为空字符串对象为False:print('xandyarebothtrue')else:print('x和y其中一个为false')#输出结果如下:x和y其中一个为falseor(or)例子:说明:只要有1条件为真(True),返回结果为真,否则为假(False)x=1y=[]ifxory:print('xoryistrue')else:print('xoryarebothfalse')#输出结果如下:'xoryistrue########################################x=0y=[]ifxory:print('xoryistrue')else:print('xoryarebothfalse')#输出结果如下如下:x或y均为假(非)示例:说明:将真假对象设置相反,比如not对象为True则变为False,not对象为False则变为Truex=1ifnotx:print('Infact,x对象为假')else:print('事实上x对象为真')#输出结果如下:事实上x对象为真#######################################x={}ifnotx:print('实际上对象x是假的')else:print('实际上对象x是真的')#输出结果如下:对象x实际上是假的1.6.5赋值运算符首先我们举个例子:x=1,赋值是将值1赋值在=符号的右侧指向左侧的变量x(记住始终先运行右侧的表达式)常用运算符:=、+=、-=、=、=、%=、*=、\=另外,还可以使用链式赋值:x=y=z=1,即x=1,y=1、z=1简单赋值示例:>>>x=1#右边的值1赋值给左边X>>>y='hello'#右边的字符串'hello'赋值给左边y复杂赋值示例:>>>x=1>>>x+=1#等价于:x=x+1,先运行=号右边的表达式,赋值给左边的X>>>print('Theresultofxis:',x)#输出结果如下:21.6.6成员运算符常用成员运算符:in和notin。in表示x的成员是否在目标y对象中,如果存在则返回True,否则返回False。>>>x='a'>>>y='abcdefg'>>>print('Themembersofxareiny:',xiny)#输出结果如下:Themembersofxareiny:True#xy的成员串'a'在y的成员串中,所以结果为Truenotin,表示x的成员不在目标y对象中,不在则返回True,否则返回假。>>>x='a1'>>>y='abcdefg'>>>print('Thememberofxisnotiny:',xnotiny)#输出结果如下:Thememberofxisnotiny:True#x的成员串'a'在y的成员串中,所以结果为True1.6.7恒等运算符恒等运算符使用is和isnot来判断标识符是否指代相同内存地址处的对象。恒等运算符在字面量上往往很容易让大家踩坑。首先要区分==和is的区别:==:指赋值的内容是否相同;is:指在内存地址指向同一对象的标识符,使用id()函数来识别;这里用逻辑图来演示一下,简单易懂:例子如下:>>>x=['a','b','c']>>>y=['a','b','c']>>>print('x的ID是:',id(x))>>>print('y的ID是:',id(y))>>>print('xandIsyequivalent(=):',x==y)>>>print('x和y在内存地址处引用同一个对象(id):',xisy)#输出结果如下:x的ID是:1986422101448y的ID是:1986422101960x和y是否等价(=):Truex和y在内存地址是否引用同一个对象(id):False1.6.8操作优先级我们来看一个操作符首先举个例子,我应该从哪里开始?从第一步算起,第二步……算到最后,结果是什么?-1+10>5and2<1#输出结果如下:False操作优先级,从上到下,从高到低优先级:1.7内置函数常用内置函数:内置函数名函数签名descriptionprintprint(value,sep='',end='n')将数据输出到控制台,默认使用空格作为分隔符(sep),换行符(n)inputinput(value)与用户交互控制台,接收用户输入,返回字符串int(value)将数据转为整数(int本质上是一个类)strstr(value)将数据转为字符串(str本质上是一个类)typetype(value)判断是什么类型objectis(本质上是一个元类)isinstanceisinstance(obj,tuple)判断对象的类型print例子:>>>print('www','python','org',sep='.',end='')#usesep=在字符串'.'之间split,end=''没有换行#输出结果如下:www.python.orginputexample:intexample:>>>x='123'#'123'是一个字符串>>>y=int(x)#int将字符串'123'转换为整数123>>>print('字符串被转换为整数:',type(y),y)#输出结果如下:Stringconvertedtointeger:123strExample:>>>x=123>>>y=str(x)>>>print('Integerconvertedtostring:',type(y),y)#输出结果如下:Integerconvertedtostring:123typeExample:>>>x='123'>>>y=123>>>print('whatisxType',type(x))>>>print('whattypeisy',type(y))#输出结果如下:whattypeisxwhattypeisyisinstance示例:>>>x='123'>>>y=123>>>print('Isainteger?',isinstance(x,int))>>>print('Isyaninteger?',isinstance(y,(int,str))#(int,str)byte,orrelation#输出结果如下:Isxaninteger?IsFalseyaninteger?True1.8循环语句是否一个程序能正常运行,必须有顺序、分支、循环操作,如果条件控制不正确rect,它会导致死循环正常顺序:从上到下一条一条执行;branch:分为单分支和多分支,如果满足条件,则执行该条件下的语句;单分支if条件:代码块#示例:x=1ifx>0:#if如果条件为真,执行以下代码块print('helloworld!')多分支if条件1:代码块elif条件2:codeblockelifcondition3:codeblock...else:codeblock#例子:x=1ifx<0:print("xisanegativenumber")elifx==0:print('xiszero')else:print('x为正数')循环:满足条件重复执行,不满足不执行;常见的循环语句:for语句、while语句、continue语句、break语句;for语句标准格式:for[element]in[iterableobject]:codeblockforstatementcombinedwithrange()function示例:说明:range()是惰性对象,需要切换它,它会返回一个值#range(stop),range(5)表示[0,5)换行前和不换行,返回(0,1,2,3,4)序列,foriinrange(5):print(i)#输出结果如下:01234###################################################range(start,stop,step),step表示iinrange(0,10,2)的步长:print(i)#输出结果如下:02468while循环说明:多用在无限循环或循环次数不清楚的情况下。标准语句:while条件:代码块死循环示例:#Infiniteloopwhile1:print('Thisisaninfiniteloop')普通循环示例:x=3whilex:print(x)x-=1#输出结果为如下:321另外想想为什么上面的结果只有321。continue说明:continue是跳过当前循环的当前循环,继续下一个循环forxinrange(10):ifx%2==0:continueprint('这个不会被执行')#never它将执行print(x)x-=1#输出结果如下:13579break说明:结束当前循环x=0whileTrue:x+=1ifx>3:breakprint(x)#输出结果如下如下:123ifaloopencountered有多层嵌套,需要注意的是break只影响当前循环---如果喜欢我的文章,请关注我的公众号:滴滴技术,扫码关注,不时分享