算术最基本的操作符,是*数学的+ - * / ,对于整数,还可以用+=,*=的操作符,对自身的值进行改变(对象引用)。以下是小编为你整理的怎样去学习python
对于整数的加减乘除,但需要注意的是,整数相除的结果是小数
PS:在一些其他语言,比如c语言,java,两个整数相除,如果产生小数,直接把小数给忽略掉,而Python刚刚相反,比如1/3,在其他语言的结果是0,在Python则是0.333333333......
如果需要把整数相除的商作为int类型整数结果,需要转化,int(小数值)
PS:直接把小数忽略掉,不会进行四舍五入的运算
列表的相加
2个列表相加之后,元素进行合并
需要注意的是,不能直接用运算符进行减法,乘法,除法运算
str类型相加(连接符)
数值相加的数学运算,字符串相加是连接
比如:'abc'+'def',结果是'abcdef'
需要注意的是,字符串只能用+号连接,不能用乘除减符号
+=,-=,*=,/=
需要注意的是,这种赋值不是改变原本的数据,而且进行运算之后产生一个新的数据,然后a重新指向新数据,原来的数据如果没有被任何标识符引用,那么会进入等待垃圾回收器清理
另外,这类操作符的左边是一个集合的时候,右边也需要是集合
有一个需要注意的是
字符串集合与字符串相加
比如,['abc']与'def'相加,不能用a = a + b,要用a += b
解析:直接相加,相当于用列表与字符串相加,如果用+=,会默认把后面的字符串转成列表
python的注释注释是什么?
我们写程序的时候,是否要标明程序的作用。例如函数、对象、方法的作用、源代码的作者等。
也就是说python解释器不解释的部分,用来我们开发时可以一目了然的功能标明,就是注释。
怎么注释呢?
这里分单行注释和多行注释。
什么是单行注释?
也就是说单行注释,标识符为#
什么是多行注释?
多行注释一般用于作者、版本标明。标识符为3个'''或者"""
当然你也可以用单行注释来实现多行注释。
例如:
#!/usr/bin/python
# 这是一个python程序
# 作者 binn louis zeng
# 版本:1.0
# 功能:1.xxxxxx
# 2.xxxxx
import sys
......
但是多行的情况是这样的:
#!/usr/bin/python
'''
这是一个python程序
作者 binn louis zeng
版本:1.0
功能:1.xxxxxx
2.xxxxx
'''
import sys
......
或者把'''替换成"""
跟着我做一遍你就完全能理解啦。
首先touch test.py
新建一个py文件。
vim打开它。
然后按a插入。
输入以下代码:
#!/usr/bin/python
#print 'test'
print 'test'
先来看看我们的代码
#!/usr/bin/python
这个是声明解释器路径
#print 'test'
这个是注释,不起作用的注释
print 'test'
这是一个打印test这个字符串的操作。
如果#注释生效的话,那么只会打印一个test对不对?
也就是只执行print 'test'这一条语句
我们:wq保存退出,然后python test.py看看结果?
二进制的实用方法
0b是二进制,比如a = 0b1001100110100110
注意:无论几进制,打印出来的都是十进制
0o表示八进制
注意:前面是数字0,后面是小写字母x
0x表示十六进制
注意:前面的是数字0,后面的是小写字母x,数值用大写字母,A~E
/与//
a/b,带小数的结果
a//b,忽略小数的结果
注意:带不带小数,它的结果都是小数
%取模(余数)
比如,10/3,正常结果的3.333333
如果需要*算术那样,10/3,求余数
可以用10 % 3
divmod(x,y)
如果需要同时求商与余数,可以用这个函数,这个函数是返回一个元组的
abs(x)
获取某个数的*,这个计算比较常用
_PyDict_GetItemId
/** Our callback function will be named op_target **/
PyObject *target = NULL;
_Py_IDENTIFIER(op_target);
target = _PyDict_GetItemId(f->f_globals, &PyId_op_target);
if (target == NULL && _PyErr_OCCURRED()) {
if (!PyErr_ExceptionMatches(PyExc_KeyError))
goto error;
PyErr_Clear();
DISPATCH();
}
为了方便理解,对这一段代码做一些说明:
f 是当前的帧,f->f_globals 是它的全局区域
如果我们没有找到 op_target,我们将会检查这个异常是不是 KeyError
goto error; 是一种在 main loop 中抛出异常的方法
PyErr_Clear() 抑制了当前异常的抛出,而 DISPATCH() 触发了下一个操作码的执行
下一步就是收集我们想要的堆栈信息。
/** This code create a list with all the values on the current stack **/
PyObject *value = PyList_New(0);(www.wenbangcai.com)
for (i = 1 ; i <= STACK_LEVEL(); i++) {
tmp = PEEK(i);
if (tmp == NULL) {
tmp = Py_None;
}
PyList_Append(value, tmp);
}