溜溜python

Python学习随笔

1.\t 为横向制表符(tab),相当于四个空格的距离。
2.python中返回None的情况:
1).通过dict提供的get(),如果key不存在,返回None。
3.解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的。

尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。

#会有栈溢出
def fact(n):
return fact_iter(n, 1)

#解决栈溢出
def fact_iter(num, product):
    if num == 1:
        return product
    return fact_iter(num - 1, num * product)
4.python中一边循环一边计算的机制,称为生成器(generator)。快速创建一个生成器的方法。
g = (x*x for x in range(10))
  1. 'slots’变量是为了达到限制的目的,Python允许在定义class的时候,定义的一个特殊的变量。其只对当前类起作用,对继承的子类不起作用!
    class Student(object):
    slots = (‘name’,‘age’) # 用tuple定义允许绑定的属性名称
5.字典推导式
{i:i+1 for i in range(10)}
6.python内建的高级函数:

1)filter

def not_empty(s):
    return s and s.strip()

list(filter(not_empty, ['A', '', 'B', None, 'C', '']))
# 结果: ['A', 'B', 'C']

filter()函数返回的是一个Iterator,也就是一个惰性序列,所以用list函数强迫filter()完成计算!

2)reduce

reduce()函数作用在一个序列上,其必须接受两个参数。

from functools import reduce
def add(x, y):
     return x + y
# lambda x,y:x+y
reduce(add, [1, 3, 5, 7, 9])
7.一个字符串中如果用单引号表示,内部还有单引号的时候需要转义。
'GAN's not %s %%' %'unix' # 错误写法
'GAN\'s not %s %%' %'unix' # 正确写法
“GAN's not %s %%” %'unix' # 正确写法
8.mysql中的优先级由高到低为:小括号,not,比较运算符,逻辑运算符
9.在Python中,以下划线开头的变量名有特殊的含义,尤其是在类的定义中。用下划线作为变量前缀和后缀来表示类的特殊成员:

l _xxx:这样的对象叫做保护变量,不能用’from module import *'导入,只有类对象和子类对象能访问这些变量;

l xxx:系统定义的特殊成员名字;

l xxx:类中的私有成员,只有类对象自己能访问,子类对象也不能访问到这个成员,但在对象外部可以通过“对象名._类名xxx”这样的特殊方式来访问。Python中没有纯粹的C++意义上的私有成员。

10.eval()函数,将字符串str当成有效的表达式来求值并返回计算结果。
11.python的垃圾回收机制:
1)使用引用计数来跟踪和回收垃圾

2)在引用计数的基础上,通过标记-清除解决容器对象可能产生的循环引用的问题

3)通过分代回收以空间换取时间的方法提高回收率。
12.python自省:
自省就是面向对象的语言所写的程序在运行时,就能知道对象的类型,简单一句就是运行时能够获取对象的类型。比如type()、getattr()、hasattr()、isinstance()
13.文件的操作:
1)获取当前的读写位置:使用tell()来获取

# 打开⼀个已经存在的⽂件
f = open("test.txt", "r")
str = f.read(3)
print "读取的数据是 : ", str
# 查找当前位置
position = f.tell()
print "当前⽂件位置 : ", position
str = f.read(3)
print "读取的数据是 : ", str
# 查找当前位置
position = f.tell()
print "当前⽂件位置 : ", position
f.close()

2) 定位到某个位置:

	如果在读写⽂件的过程中,需要从另外⼀个位置进⾏操作的话,可以使⽤seek()

	seek(offset, from)有2个参数

	offset:偏移量

	from:⽅向

	0:表示⽂件开头

	1:表示当前位置

	2:表示⽂件末尾	
14.进程与线程
1)主线程会等待子线程执行完毕之后再退出。

2) 主进程会等待子进程执行完毕后再退出,但是前提是子进程是通过multiprocessing.Process()产生的,而不是通过进程池批量产生的子进程。后者的产生子进程主进程是不会等待的。
15.os与sys模块的区别
首先两者都是针对函数而言的。os模块提供了一种方便使用操作系统函数的方法;sys提供访问由解释器使用和维护的变量与解释器进行交互的函数
16.json模块的使用
json.dumps()与json.loads()

前者将obj转化为json str,后者将str转化为python对象,如果json字符串是个object,转化为dict,若是array则转化为list。
17.字符串join方法的使用:
#内部元素必须为字符串
list = ['0','1','2','3','4']
str = ''.join(list)
print(str)
18.python的内置函数-vars

(1) 当函数不接收参数时,其功能和locals函数一样,返回当前作用域内的局部变量。

>>> v1 = vars()
>>> l1 = locals()
>>> v1
{'__name__': '__main__', '__builtins__': <module 'builtins' (built-in)>, 'v1': {...}, 'l1': {...}, '__spec__': None, '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>}
>>> l1
{'__name__': '__main__', '__builtins__': <module 'builtins' (built-in)>, 'v1': {...}, 'l1': {...}, '__spec__': None, '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>}

(2) 当函数接收一个参数时,参数可以是模块、类、类实例,或者定义了dict属性的对象。

>>> import time
>>> vars(time)
19. -u 在Python中的使用

python的输出有缓冲,导致log并不能够马上看到输出。

-u参数,使得python不启用缓冲。

所以修改命令即可:nohup python -u test.py > log &

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值