Python入门<二>

来源:互联网 发布:网络拉丝是什么意思 编辑:程序博客网 时间:2024/05/22 09:41

Python是如何进行内存管理的

  • Python引用了内存池机制,即Pymallc机制,用于管理对小块内存的申请和释放
    内存池:当创建大量消耗小内存的对象时,频繁调用new/malloc会导致大量的内存碎片,致使效率降低。内存池这个概念就是预先在内存中申请一定数量的,大小相等的内存块留作备用,当有新的内存需求时,就先从内存池中分配内存给这个需求,不够了之后再申请新的内存,这样做最显著的优势就是能够减少内存碎片,提升效率。
  • Python中的内存管理机制–Pymalloc:Python中的内存管理及时都有两套实现,一套针对小对象,就是大小小于256bits是,Pymalloc会在内存池中申请空间;当大于256bits时,则会直接执行new/malloc的行为申请内存空间
  • 关于释放内存方面,当一个对象的引用变成0的时候,Python就会调用他的析构函数。在析构时,也采用了内存池机制,从内存池来的内存会被归还到内存池中,以避免频繁的释放动作

分支结构

  • if:
if 表达式:    语句
  • if…else…:
if 表达式:    语句else:    语句
  • if…elif…else…
if 表达式:    语句elif 表达式:    语句else:     语句注意:在python里面不支持switch语句,如果想实现switch的效果,第一种方法就是使用if...elif...elif...else...;

python中实现三目运算符:

               a=1                b=2Python:     maxNum= a if  a>b else b释义:给a和b给一个值,根据所给条件a>b,如果为真则输出a的值,如果不是则输出b的值

循环结构

for循环

  • range(m,n,x):从m起始到n-1结束(不包含n),x代表步长;
for item in range(m.n,x):    循环的语句for item in 可迭代的类型(eg:字符串.....):    循环的语句
  • 两个关键字:
break:跳出循环,不再执行循环;continue:跳出本次循环,继续执行下一个循环;

while循环

while

while 表达式(或者TrueFalse):    循环的语句

while … else …..

while 表达式:    循环语句In [5]: while trycount<3:   ...:     print "login"   ...:     trycount+=1   ...: else:       ...:     print "bigger than 3"   ...:     

pass

只是占一个语句的位置,并无任何操作;

字符串的定义

  • ” “

  • ’ ‘

  • “”” “”“
    转义字符:\n \r \t \’ \”

字符串的特性

  • 索引:检索引用,通过字符串的下标,拿出字符串的某个字符;(注意:下标从0开始)
    a[0] ## 拿出字符串第一个字符
    a[-1] ##拿出字符串最后一个字符

  • 拼接:+

"hello" + "world"a[0]+a[1]
  • 切片:切出字符串指定的部分
    这里写图片描述
a[m:n:x]    #从m索引开始切,到n-1结束,间隔为xa[:n]       #从开头切到n-1a[m:]       #从m切到字符串结束a[::]       # 切出与a相同的字符串a[::-1]     # 倒序输出字符串a

字符串的方法

字符串填充

//输出字符串宽度为width,S显示在中间,其他部分由fillchar填充S.center(width[, fillchar]) -> string #输出字符串宽度为width,S显示在中间,其他部分由fillchar填充S.ljust(width[, fillchar]) #S显示在left(左边)S.rjust(width[, fillchar]) #S显示在right(右边

删除前后空格

//删除S中首位指定的chars,没有参数时,默认为空格;S.strip([chars]) -> string #返回一字符串,将str中首尾包含指定的chars字符删除的字符串,未指定时,删除首尾的空格。S.lstrip([chars]) #删除左边的空格S.rstrip([chars]) #删除左边的空格

字符串变形计

s.swapcase #大小写互换s.title #判断是不是都是标题(有大小写)s.upper #判断是不是都为大写字母s.lower #判断是不是都是小写s.format #传递参数

字符串分割

这里写图片描述

s.split()   //默认情况下以空格为分隔符

字符串判定(是否小写/大写/数字…..)

判定一串字符中的大写小写还有数字,并且将它们罗列到一起
这里写图片描述

s.isuper() #判断是否是大写字母s.islower() #判断是否是瞎写字母s.isdigit() #判断是否是数字

字符串的查找

str.count(sub[, start[, end]]) -> int #返回sub在str中出现的次数,如果start与end指定,则返回指定范围内的sub出现的次数str.find(sub[,start[,end]]) #判断sub是否在str中,存在返回索引值,不存在返回-1str.index(sub[,start[,end]]) #与find方法函数功能相同,如果sub不存在时会显示ValueError异常;str.rindex(str, beg=0 end=len(string)) #他也是字符串得查找,返回str字符串出现的最后的位置,可以限制查找范围str.rfind(str, beg=0 end=len(string)) #返回字符串最后一次出现的位置(从右向左查询),如果没有匹配项则返回-1

替换

这里写图片描述

str.replace(old,new[,count]) #将str中的old字符串替换为new字符串,并将替换后的新字符串返回,如果count指定,则只替换count个字符串

练习

1.(复习)用户输入一个数字,判断是否为质数;

#!/usr/bin/env python#coding:utf-8"""file:.pydate:8/25/17 8:43 PMauthor:M"""num = input("please input a number :")if (num >1):    for i in range(2,num):        if (num % i)==0:            print ("this num is not  positons")            break    else:        print ("this num is a positions")else:    print ("this num is not  positons")

这里写图片描述
2.编写一个python脚本,判断用户输入的变量名是否合法?
( 首位为字母或下划线,其他为数字,字母或下划线)

#!/usr/bin/env python#coding:utf-8"""file:.pydate:8/25/17 8:57 PMauthor:M"""import stringvariate=raw_input("variate:")if variate[0] in string.letters+"_":     for i in variate[1:]:         if (i in string.letters+"_"+string.digits)==False:             print "不合法!"             break     print "合法!"else:    print "不合法!"

这里写图片描述