您的位置:首页 > 编程语言 > Python开发

Python基础学习<二>

2017-08-25 21:30 357 查看

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中实现三目运算符:

C语言中:     maxNum = a>b? a:b
Python中:    maxNum= a if  a>b else 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 表达式(或者True,False):
循环的语句


while … else …..

while 表达式:
循环语句

In [5]: while trycount<3:
...:     print "login"
...:     trycount+=1
...: else:
...:     print "bigger than 3"
...:


pass

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

程序 = 算法 + 数据结构

C:数组,结构体,………..

Python: str,list,tuple,set,dict……..

字符串

字符串的定义

” ”

#str1 =’our company is westos’

’ ’

#str2 = “our company is westos”

“”” “””

#str3 = “”“our company is westos”“”

转义符号

一个反斜线加一个单一字符可以表示一个特殊字符,通常是不可打印的字符

- \n    #代表换行符
- \"     #代表双引号本身
- \t     #代表tab符
- \;     #代表单引号本身


字符串的特性

索引:检索引用,通过字符串的下标,拿出字符串的某个字符;(注意:下标从0开始)

a[0] ## 拿出字符串第一个字符

a[-1] ##拿出字符串最后一个字符

拼接:

"hello" + "world"
a[0]+a[1]


切片:

-上边界并不包含在内;

-如果没有给出切片的边界,切片的下边界默认为0,上边界为字符串的长度,扩展的切片S[i:j:k],其中i,j含义同上,k为递增步长;

a[m:n:x]         #从m索引开始切,到n-1结束,间隔为x
a[:n]            #从开头切到n-1
a[m:]            #从m切到字符串结束
a[::]            # 切出与a相同的字符串
a[::-1]          # 倒序输出字符串a


字符串的方法

字符串填充

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

#传递参数

字符串分割

str.split([sep[,maxsplit]])

#- 以sep字符串作为分割符对str进行切割,默认为空格,maxsplit代表切割的此处

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

s.isuper()

#判断是否是大写字母

s.islower()

#判断是否是瞎写字母

s.isdigit()

#判断是否是数字

字符串的查找

str.count(sub[, start[, end]]) -> int

#返回sub在str中出现的次数,如果start与end指定,则返回指定范围内的sub出现的次数

str.find(sub[,start[,end]])

#判断sub是否在str中,存在返回索引值,不存在返回-1

str.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个字符串

练习

素数的判度

#!/usr/bin/env python
#coding:utf-8
"""
file:.py
date:8/25/17 8:43 PM
author:feitina
"""
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")




编写一个Python脚本,判断用户输入的变量名是否合法?

(首位为字母或下划线,其他为数字,字母或下划线)

#!/usr/bin/env python
#coding:utf-8
"""
file:.py
date:8/25/17 8:57 PM
author:feitina
"""
import string
variate=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 "不合法!"


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python