ipython的简单使用
?这个是整体的一个帮助
这样就把一些int相关的初始化,当内建函数以及当类怎么做,都告诉你,以及模式方法
??有些可以把源代码显示出来
a相当于打印了一下,有输出了
————三个下划线代表前三次输出,仅限于有out这种
输出的历史,_oh outputhistory
cd切换目录
这些都是工具提供给你一些好的手段而已
直接写touch可以
但是可以这么写ls,!ls
!可以调用shell命令,调用的是当前shell,当前操作系统的shell
在当前windows操作系统调用的shell,等于再windows命令行调用touch命令
这个其实windows不支持ls命令,但是用来开源项目就可以支持
前面加!,调用的是当前操作系统的shell
ls是里面提供的
!ls,加上感叹号代表是当前操作系统的shell
使用%百分号开头,就是内置的特殊方法,这个特殊方法是使用单个百分号开头的
以单个百分号开头就是line magic
%%开头就是cell magic,
我们写的一个个框子叫cell,代表一个个框子,框子内的一行就代表line
%单个百分行只能作用在当前行
%%代表这个框子内部都受到控制
把-1当参数了,带-,以为是个参数
单行的叫,line magic,单行的魔术方法
这样就只管上面那行,下面管不着
%%是整个框子,整个cell归他管
%%还有更强大的作用
可以给下面送初始值
可以用别名的方式
%timeit 是单行,后面加语句即可
指定多少次,每次多少个循环loop,按默认就行,默认也会运行了个几万次,算出平均时间
如果想测试,建议使用cell的这种方式,简单
打印当前工作目录,pwd只不过是快捷方式,跟ll 和ls -l类似
%pwd是ipython,用python源码提供的,!pwd是用你当前操作系统的shell来实现的
也支持js弹窗,可以调试js代码
这些都是小技巧
封装指的是:
将多个值使用逗号分割,组合在一起,
本质上,返回一个元组,只是省掉了小括号
python特有语法,被很多语言学习和借鉴
这两种在python是等价的,t生成一个元组,t1,等号右边如果逗号分割,会自动封装成元组的
等号右边如果逗号分割,会自动封装成元组的
看起来像是a给了b,b给了a,但本质不同,右边先封装,封装成元组,左边再拆开,然后依次对应,虽然达到效果一样,但是和上面实现的方式完全不同
1.上面是借助了一个临时的变量,开辟了一个内存空间,中间没有生成任何元组
2.下面是右边先生成元组,然后把元组拆开赋值给变量,(封装和解构)
解构:
把线性结构的元素解开,并顺序的赋给其它变量
左边接纳的变量数要和右边解开的元素个数一致(a,b=b,a,右边的元组元素要跟左边的接收的变量个数一致)
相当于
下面就等于,实际上先封后解
打印出来的时候会被ipython封装成元组
** __下划线是ipython环境提供的,离开ipython就不作数了**
左边是一个标识符就是赋值,赋值即定义
变量的数目和右边的元素个数不一致,还多2个
解构在现在的情况,左右的数目必须匹配
一旦左边用到多个标识符,就要用到结构了,结构在一般情况下,左右数目一致
都是单个数字,只不过凑在一起,打印出来的自动给封装成元组
先从t2找两个出来,0和1的元素
元组可迭代对象,拿list一包,还是可迭代对象
赋值表达式先看右边计算,右边计算好后,再看左边,如果右边完成不了,就直接抛出异常了
所以赋值表达式,是先算右边的
set是集合,这个集合里面可以放很多东西,这个构造函数跟list类似,把后面东西可迭代对象,依次扔到set这里面去
增加一个个数t9。
set是一个非线性结构,也可以解开,结构在这种使用情况下有一个基本前提,要求右边的数目和左边的数目一致
左边出现多个标识符就是解构
** 特殊的标识符,表示尽可能多的收集数据
t7,t8吃掉一个,tail最后一个*
出现了两个贪婪的,就会出错
t9[]-1取到最后一项
没有必要加星号,没星号就等于一个赋值语句,没必要单独使用
放在前面,999被t12拿走了
这就是尽可能多的去吃掉数据,不可以单独使用,没这个必要
字典的结构有一些区别
字典也是非线性结构,也可以解构
解构其实用的比封装多
这个数目不对
集合类型
左右只要数目相同,结构就没有问题
这种是不被允许的
,mid就变成列表了
** _下划线是一个合法的变量,代表一个不关心的变量,
但是在ipython里面,代表前一次的out**
在python中凡是下划线开头的,都是告诉你有特殊用途的
中间不关心有多少收多少
想看里面是什么,直接打印即可
开头和中间都不关心
前一个被后一个覆盖掉了
访问下划线的时候,前面的会被后面的下划线覆盖掉,所以不是9,而是【8,7】
类似下面的
下划线_变量本身没有任何语义,没有任何可读性,所以不是用来给人使用的,除非你猜到是什么意思,否则不要轻易去使用
学了函数,各个函数都会有作用域,互不影响了
不要索引也可以,但是如果在循环中,就需要用到索引加减法
** lst[1][2】**
做测试可以写成这样
要结构的话,外层可以不加,但是里面必须要加()
只要知道结构提取出来就没什么问题,可以不用索引
避免意外情况,只要切一刀就行
上面是交给ipython打,自动封装成元组,
print打印默认分割是空格
但是遇到这种问题往往遇到partition函数,返回一个三元组
两层循环,第一层循环管趟数,第二层循环管比较和交换,在里面判断,谁大于谁,怎么样
每一趟假定没有交换过,交换过看下一趟,如果下一次没有交换过,此次循环终止
但是交换的时候最好不要写tmp
还是a,b=b,a这样写,这样写才认为你懂python
解构,是python提供的好的功能,可以方便的提取复杂数据结构的值
配合_的使用,会更加便利
python就要你使用解构,索引,负索引,怎么方便怎么来
解构,等号右边先封装,左边看情况,单个值就是赋值,多个标识符,就是解构(一般要求两边个数相同,除了用*变量,)