您的位置:首页 > 编程语言 > Python开发

python 脚本语言1

2015-07-18 17:06 513 查看
新建文件:1.py

在文件头写入#!/usr/bin/python 这样就可以直接输入文件名就可以执行python程序

否则的话就要指定python XXX 来指定用python 来执行程序

新建文件按;2.py

import py_compile

py_compile.compile('1.py') 因为两个文件在同一目录下,可以直接编译

设置文件夹权限 chmod -R 755 python/

执行python 2.py

目录下多了一个1.pyc 编译好的python程序文件

或者用命令 python -O -m py_compile 1.py 这儿的O要大写

生成的文件是1.pyo ,这个是经过优化的二进制文件

变量赋值,不用指定类型:SyntaxError :泛指语法错误

a=5

NameError : 变量,函数,类 未被定义

id(a) 查看的是在内存中的地址编码

b=5

这个时候a,b 的内存地址是一样的。

3==3.0 成立 先比较的是数值大小,而不是字符串比较

与或非 and or not关键字

a=raw_input() 等待 表示从输入的内容导入a变量 得到的是一个字符串!!!

强制类型转换a=(int)raw_input()

提示输入:a=(int)raw_input("please input num1:")

type(a) 查看a 的数据类型

num2=123L 把123 强制存储为长整形

f1=12.0 表示存储成浮点值

复数类型 用j表示虚部 k=3,14j

字符串 定义用‘xxxx’ “xxx” ”“” xxx “”“” 三重引号都会记录下所有在三重引号内的操作。包括换行,tab,都会被记录

三重引号还用做程序注释

转意符号\" \'

\n 换行

特别注意:下标从0开始;str[0:3]不包含下标为3的字符。

字符串 切片 a[0:4] 表示从第一位取到第四位 !!!!!

a[:4] 表示3之前的都要被取到 !!!!!

a[::2]表示隔两个间隔取值!!!!

a[-1] 表示取出倒数第一个的值!!!!

不管正负但是都是从左往右取值!!!!

a[::-1]要从右往左一个一个取值!!!!

len(a) 这个求长度

*n 重复n次

‘a’ in a 判断a数组中有么有‘a’

cmp (a,b)比较两个字符串比较大小 ,字母比数字大

元组:t=(“milo”,30,"male")

同样可以索引和切片,元组值不可变

但是可以全部改变 t=(“milo”,31,"male") 不让单个改变

即使 只有一个元素的元组,一定要跟上一个逗号, t=(3,)!!!!!

分别赋值 name,age,gender=t

序列:列表是可变的

list=['milo',30,'male']

list[0]='luis' 是被允许的空间

改变后的存储空间是不变的

IndexError 索引错误

list.append('xxxx') 添加

list.remove('xxxx') 这里删除发现内容的第一个 或者 del (list[1])

zip(t1,t2) 表示从两个列表中依次取值,然后组成一个新的列表

字典类型:

dic=['name':'luis','age':25,'gender','male']

dic['name']

遍历字典 for k in dic

print dic[k]

字典增加很方便 (无序的) dic['tel']='123455'\

删除 del dic['tel']

弹出 dic.pop('age') 弹出后字典里就没有这个值了

dic.clear 清空字典

del(dic) 删除字典

dic.get(k,'error') 取字典中的值,如果不存在的话返回error

if expression: 注意冒号

action 注意四个空格表示缩进 IndentationError 缩进错误

elif:

nnnn

else:

llll

for iterating_var in sequence: 序列可以是:列表,字符串,元组,或者一些表达式,

statements(s)

range(100) 生成0-99 的序列!!!!!

range(初始值,终值,步长) 终值要比预想值的边界多一

xrange(100) 返回的是迭代的对象,不占内存空间

函数:

def add(a,b):

c=a+b

print c

# 表示注释

写在程序前头#coding:utf8 程序里就可以使用中文了

def machine(x,y='444') : 这里定义的y 就是一个默认值,调用的时候y可以不传值了

调用传值的时候,传参数总是对应位置,对应变量赋值,

原则:定义函数参数时候,右边的尽量设成默认参数,左边的设置成非默认参数

函数内部的局部变量不会覆盖全局变量的内容(会隐藏全局变量内容??),局部变量只能在函数内部使用

在函数体里写出global y 可以强制声明为全局变量,这样就会覆盖全局变量的内容

求和函数sum([1,2,3,4,5]) 内置函数把序列的内容求和

print "%s,%s" % x,y 把字符串传给对位置的格式符号

def f(x,y):

print "%s,%s" % (x,y)

如果t=('name','luis')

可以这样调用了f(*t) 把参数对应上了

*元组 类似于把元组里的元素一个一个拆开传值导入

注意,如果字典对应的键正好是函数的形参(同名),那么就可以直接用f(**d)来传对应的参数,

字典是无序的,如果不对应,就找不到对应的传值!!!!!!

对于多传参数,或者参数不确定,参数冗余

def f(x,*args):

print x

print args

多余的参数回传入args 中组成一个新的元组

def f(x,*args,**kwargs):

print x

print args

print kwargs

多余的参数回传入args 中组成一个新的元组

f(x=3,y=1)

y=3 被存入kwargs字典中了

参数变量名一定不能重复,调试多用print,真是程序尽量多用return
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: