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=
2
Python: 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 表达式(或者
True,
False):
循环的语句
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]
a[:n]
a[m:]
a[::]
a[::-
1]
字符串的方法
字符串填充
S
.center(
width[, fillchar]) -> string
#输出字符串宽度为
width,S显示在中间,其他部分由fillchar填充
S
.ljust(
width[, fillchar])
#S显示在
left(左边)
S
.rjust(
width[, fillchar])
#S显示在
right(右边
删除前后空格
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中,存在返回索引值,不存在返回-
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个字符串
练习
1.(复习)用户输入一个数字,判断是否为质数;
"""
file:.py
date:8/25/17 8:43 PM
author: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脚本,判断用户输入的变量名是否合法? ( 首位为字母或下划线,其他为数字,字母或下划线)
"""
file:.py
date:8/25/17 8:57 PM
author:M
"""
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 "不合法!"