1.简要说明
python是解释型程序,也就是边读源程序程序边执行,所以在程序编辑和程序之间没有类似于.0这种目标代码的产生,这也让python的性能受到影响。
2.python的编写
IDEL提供了IDEde编译环境,可以在>>>之后直接编程,python编程的一个奇特就是,能够编写一句,就执行一下。当然可以用IDEL的File菜单,建立new window,编辑完保存,run菜单点击一下,就可以在IDEL中看到执行结果了。
python编写中,是没有{}来标识程序块的,依靠的是缩进,同一缩进表示的就是同一程序块的。这个不用担心,只需要回车,IDEL会自动帮你完成。
3.基本语法与知识
变量:不用指定类型,不需要类型转换和匹配。如果忘记了变量或数据类型,记得用type函数
变量名:以字母开头、由数字和字符组成的任意长度字符串。注意:不可包含非法字符;不可使用关键字作为变量名;区分大小写
语句:特殊的打印
双引号--print ' " " '
换行--print '\n'(和c一样)
表达式包括了值、变量和操作符,是合法语句,但是无输出
运算符:也有+、-、*和/,由于python中不会定义数据的类型,会自动进行类型提升,特别注意的是/,结果的类型将是操作数中精度较高的。模操作符%则是计算两个整数的余数;此外,还支持复数运算,直接定义(eg:a=1+5j)或使用函数(eg:x=complex(1,5))
运算次序:先括号,在乘幂(**x),然后是乘除,最后加减
字符串不能乘除和减,但是可以加
注释符号:#,可以在代码后面,也可以单独一行
4.函数
函数定义:
def <name>(arg1, arg2, ..., argN): #没有参数类型和返回类型
<statement>
变量的范围:python只有一个主函数:_main_,其他函数都是在这个函数内执行,着就相当于在_main_中是全局变量,在内部函数中的是局部变量
函数的返回值:函数可以进行return,如果没有return或return后面没有表达式,返回的是none,不属于任何类型,不知道有啥神奇作用
类型转换:虽然python中的变量类型任变,但python还是提供了进行类型转换的内置函数。eg:int()、float()、str()
数学模块:math
在此模块中的常见函数有:log10(arg) sin(arg) cos(arg) exp(arg) pow(arg1, arg2) sqrt(arg) fabs(arg)
模块中的常量:pi e
如何调用:1.import math,但是每次调用函数和常量的时候都得是math.+函数名或常量名
2.from math import *,这样每次调用就不用加了
单行小函数:
labmda 参数:表达式 #默认返回表达式的值
5.条件表达式
布尔表达式:(真值为1,假为0值)
比较两个数大小:==、!=、<=、>=、<、>
逻辑操作符:and/or/not。python中,字符串为空则为假,非空则为真;对数来说,非零为真,零为假。
and的计算:只要左边的表达式为真,整个表达式返回为右边表达式;否则返回左边表达式
or的计算: 两边都为真,返回左边表达式的值;一真一假,返回真值表达式;由于如果两个都是假,只有可能是0和空值的组合,返回是右边的0或空值
条件语句:
if <表达式1><布尔比较/逻辑操作><表达式2>:
<statement>
else:
<statement>
此上是比较简单的,还有elif
while语句:判断之后执行循环体
条件嵌套
键盘输入:内置的函数获得键盘的输入。raw_input(),当按下回车后,程序恢复执行,并且raw_input()返回用户输入内容
6.字符串(字符串中的字符不可被修改,这和列表中的元素不同)
字符串是一种组合数据类型,是由多个字符构成。操作符[]可以从字符串中提取任意个连续字符,可以是一个值,也可是一个范围(左开右闭的区间)。
操作:len(arg) arg[index] arg[m:n]
在字符串模块string中处理字符串的函数:find(种类多) ;常量:lowercase uppercase digitsl
7.列表
定义:list[element1, element2, ..., elementN]
特点:任意类型的值、有序
列表用[]将元素括起来,内部元素之间用","隔开,可以嵌套。第一个索引为0。#列表的嵌套就像多维数组一样
列表读:[index]--注意index可以是表达式,但必须是整数 #[m:n]可以将列元素连续取出,叫片段,该片段仍是列表
列表的一些方法:list.append(element)(在列表的尾部追加元素)
list.insert(index, value)(在指定位置插入元素)
list.extend(list1)(列表合并) #此外,还能通过操作符+,将两个列表连接成一个
list.index(element)(返回列表中element第一次出现的位置,如果list中没有element会报错)
list.remove(element)(删除列表中第一个此element) #此外还提供del list[index]进行元素的删除,当然可以为[m:n],注意范围
list.pop()(删除最后一个值)
列表的操作:
listA+listB#将两个列表连接成一个列表
list*Arg#把列表list中的所有元素重复一定次数,然后形成新的列表
del list[m|m:n] #删除列表中的元素,可以为单个元素,也可以是一定索引范围内的元素
listA=listB[:]#对列表B进行克隆
列表作为函数参数进行传递的时候,传递的是列表别名,而不是列表的拷贝,所以要注意如果在函数中对列表进行修改,会影响到原值
8.别名
当两个变量的值一样的时候,python会认为这些变量是同一个值的别名,指向同一内存空间,所以对其中一个的修改,会导致另一个变量的修改;但如果其中一个变量进行赋值,它们就会指向不同的内存地址。
列表有不同的名字,分别叫a和b,我们叫做别名,虽然名字不同但指向内存的相同地址。利用操作符[]修改任何一个列表的元素,另一个列表也会做出相同改变;但如果是对其中一个列表进行赋值,那么两个别名对指向不同的内存地址,也就是说之后对两者的修改不会发生联系。
列表作为函数参数传递的时候,是别名方式,为了避免在函数中对原列表的修改,须进行列表的克隆,即:listA=listB[:]