python点滴 1

1 Python 函数(类中方法)是第一类对象,不带扣号代表函数或方法对象自己,
带括号,是函数或方法调用。带括号(此时必须传入需要的参数),调用的是函数的return结果
不带括号,你变成了二个lower 方法在比较

3 class实例化带不带括号:

1 class clseest():
2     y = '我 '
3     def __init__(self):
4         self.y = '你'
5 x = clseest
6 print(x.y)  #我
7 
8 x = clseest()  
9 print(x.y)#你

即:带括号的实例化方法是调用了init()函数, 此时必须传入需要的参数

4 python中的zip
Python3中zip()返回的是元祖组成的迭代器,而在Python2中返回的是元祖组成的列表。
可以使用next()打印

zip('ABCD', 'xy') --> Ax By
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zip(x, y))
>>> x == list(x2) and y == list(y2)
True

9.python argparse用法总结
命令行参数解析模块;终端命令行输入pythontest2.py –help, Ipython终端输入%runtest2.py -h

10.generator:在Python中,这种一边循环一边计算的机制,称为生成器:generator。
保存的是算法而非元素整体;可以用next()打印也可以for循环打印

两种方式:
1.只要把一个列表生成式的[]改成();创建 L和 g的区别仅在于最外层的[]和(),L 是一个list,而g是一个generator。next()函数获得generator的下一个返回值,for循环,因为 generator也是可迭代对象;

2.函数定义中包含 yield关键字,generator的函数,在每次调用 next()的时候执行,遇到yield语句返回,再次执行时从上次返回的 yield语句处继续执行;

11.迭代器和可迭代对象

这些可以直接作用于for循环的对象统称为可迭代对象: Iterable。
一类是集合数据类型,如list、tuple、dict、set、str 等;
一类是generator,包括生成器和带yield 的generatorfunction。
用下面的函数判断;
isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。

from collection import Iterable

isinstance([],Iterable)

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator

isinstance()判断一个对象是否是Iterator 对象,

fromcollections import Iterator

isinstance(range(6),Iterator)

生成器都是Iterator 对象,但list、dict、str 虽然是Iterable,却不是Iterator。

把list、dict、str 等Iterable 变成Iterator 可以使用iter()函数

两者区别:Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。

Iterator甚至可以表示一个无限大的数据流,例如全体自然数。而使用

list是永远不可能存储全体自然数的。

12.python3中的range,,numpy中的arange
enumerate函数用于遍历序列中的元素以及它们的下标:

NameError:name‘xrange’ is not defined,在Python3中,range()与xrange()合并为range()。

fori in enumerate(range(4)) :

print (i)

range()返回的是一个可迭代对象;

np.nrange()返回的是numpy.ndarray();range尽可用于迭代,而np.nrange作用远不止于此,它是一个数组,可被当做向量使用。

df= pd.DataFrame(np.arange(5 * 4).reshape((5, 4)))

13.传入参数时容易漏掉的括号

zero_matrix = np.zeros(len(movies),len(genres))TypeError:data type not understoodzero_matrix= np.zeros((len(movies),len(genres)))

14.str的方法

strip()方法用于移除字符串头尾指定的字符(默认为空格)。str.strip(‘0’ )

15.list.append(object) 向列表中添加一个对象object;
list.extend(sequence)把一个序列seq的内容添加到列表中;

16.关于随机数种子

计算机并不能产生真正的随机数,如果你不设种子,计算机会用系统时钟来作为种子,如果你要模拟什么的话,每次的随机数都是不一样的,这样就不方便你研究,如果你事先设置了种子,这样每次的随机数都是一样的,便于重现你的研究,也便于其他人检验你的分析结果。

17.list和tuple的区别,tuple不可更改

18.python中的上下文管理器

with,上下文管理协议则是enterexit;配合with语句使用的时候,上下文管理器会自动调用enter方法,然后进入运行时上下文环境,如果有as从句,返回自身或另一个与运行时上下文相关的对象,值赋值给var。当with_body执行完毕退出with语句块或者with_body代码块出现异常,则会自动执行exit方法,并且会把对于的异常参数传递进来。如果exit函数返回True。则with语句代码块不会显示的抛出异常,终止程序,如果返回None或者False,异常会被主动raise,并终止程序。

执行contextor以获取上下文管理器

加载上下文管理器的exit()方法以备稍后调用

调用上下文管理器的enter()方法

如果有asvar 从句,则将enter()方法的返回值赋给var

执行子代码块with_body

6.调用上下文管理器的exit()方法,如果with_body的退出是由异常引发的,那么该异常的type、value和traceback会作为参数传给exit(),否则传三个None

7.如果with_body的退出由异常引发,并且exit()的返回值等于False,那么这个异常将被重新引发一次;如果exit()的返回值等于True,那么这个异常就被无视掉,继续执行后面的代码

19.再看if__name__ == ‘main‘:

main()

我们简单的理解就是:如果模块是被直接运行的,则代码块被运行,如果模块是被导入的,则代码块不被运行。

if__name__ == ‘main’ 就相当于是Python模拟的程序入口。Python本身并没有规定这么写,这只是一种编码习惯。由于模块之间相互引用,不同模块可能都有这样的定义,而入口程序只能有一个。到底哪个入口程序被选中,这取决于name的值。

20
1、读写文件

open()将会返回一个file对象,基本语法:

open(filename,mode)

filename:是一个包含了访问的文件名称的路径字符串

mode:决定了打开文件的模式:只读,写入,追加等,默认文件访问模式为只读(r)

不同模式打开文件的列表:

r:以只读的方式打开文件,文件的指针将会放在文件的开头,为默认模式

rb:以二进制格式打开一个文件用于只读,文件指针会在文件的开头

r+:打开一个文件用于读写,文件指针将会在文件的开头

rb+:以二进制格式打开一个文件用于读写,文件指针会放在文件的开头

w:打开一个文件用于写入,如果该文件已存在则将会覆盖文件,如果不存在则创建新文件

wb:以二进制打开一个文件用于写入

w+:打开一个文件用于读写

wb+:以二进制格式打开一个文件用于读写,如果文件存在则覆盖,如果不存在则创建新文件

a:打开一个文件用于追加内容,如果文件已存在,文件指针会放在文件的结尾,如果不存在则创建新文件进行写入

ab:以二进制格式打开一个文件用于追加写入

a+:打开一个文件用于读写,如果该文件已存在,文件指针会放在结尾,文件打开时会是追加模式,该文件不存在则创建新文件

ab+:以二进制格式打开一个文件用于追加。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值