python的安装
linux系统自带python
python的进入
终端输入python回车即可
>>
python的退出
>>>exit() 或 Ctrl-D
第一个命令
单双引号无任何区别,而在shell中单双引号是有区别的
>>>print "Hello World!"Hello World!>>>print 'Hello World!'Hello World!
以文件的方式写python脚本
vim /tmp/hello.py#!/usr/bin/pythonprint "hello world!"
运行python脚本文件
[root@dd ~]# python /tmp/hello.pyHello World![root@dd ~]# chmod +x /tmp/hello.py[root@dd ~]# /tmp/hello.pyHello World!
命令行下的python不能自动补全,可用下面方法解决
[root@dd ~]# cat /usr/local/bin/tab.pyfrom rlcompleter import readlinereadline.parse_and_bind('tab: complete')[root@dd ~]# tail -1 ~/.bashrcexport PYTHONSTARTUP=/usr/local/bin/tab.py[root@dd ~]# source ~/.bashrc
然后进入python,就可以用tab键自动补全了
用IDE书写和运行python程序
上面我们了解了在命令行中使用python,下面介绍IDE。
一般开发程序时,用IDE是更好更方便的选择,能够自动补全、联想等
IDE:集成开发环境
安装并启动IDE:pycharm(首先要保证机器上有python)
然后编写python程序
运行方法
1 在文件层级目录上点击右键 - copy path,然后回到命令行,执行
Linux: python 文件名
window: C:\Python27\python.exe 文件名
2 在文件标签页上点击右键 - Run '文件名',即可在pycharm中执行
1)三引号的用法
>>> words = '''hehe... nishi... shei... de... er... zoi'''>>> words
2)注释和缩进
加注释 ctrl+
tab shift+Tab
3)字符串步长
>> mystr = "foxpast"
>> mystr[::2]
'fxat'
>> mystr[1::2]
'ops'
>> mystr[::-1]
'tsapxof'
4)字符串“运算”
>> mystr*2
'foxpastfoxpast'>> (mystr+" ")*3
'foxpast foxpast foxpast '
字符转数字 int()数字转字符 str()
5)字符串方法
>> mystr.upper()
'FOXPAST'>> mystr.center(50,'#')
'#####################foxpast######################'>> mystr.ljust(50)
'foxpast '
5.1)列表方法
list = []
list.append(value)
6)if判断
if 10: #非0即为true
print 'yes'
if -0.0 #-0.0为0,即为false print 'yes'if ' ': #空为false;空格不是空,即为true print 'yes'
7)while循环
while 真 :
8)中断
9)for循环
for i in 'abc': #和shell不一样,这里字符串有多长,执行多少次;shell中一个字符串只执行一次
print i
for n in ['hehe', 'haha', 'jiji']:
print n
a
b
c
hehe
haha
jiji
11)range() , xrange()
range() 结束不包含
range(10)0~9range(1,11)1~10range(10,0,-1)10~1xrange()类似,区别是不占用内存例 : 菲薄纳妾数列,背下来#coding: utf8l = int(raw_input("请输入长度:"))fib = [0,1]for i in xrange(l-2): fib.append(fib[-2]+fib[-1])print fib
12)列表解析
>>> [10][10]>>> [10+20][30]>>> [10+20 for i in xrange(10)][30, 30, 30, 30, 30, 30, 30, 30, 30, 30]>>> [10 + i for i in xrange(1,11)][11, 12, 13, 14, 15, 16, 17, 18, 19, 20]>>> [10 + i for i in xrange(1,11) if i% 2 == 1][11, 13, 15, 17, 19]>>>
例:制作一个列表,要192.168.1.1到10
>> ['192.168.1.'+str(i) for i in xrange(1,11)]
>> ['192.168.1.%s' %i for i in xrange(1,11)]
13)打开文件——方法1
>> f = open('/etc/passwd')
>> data = f.read()
>> data
>> print data
>> f.close()
14)打开文件——方法2
>> f = open('/etc/passwd')
>> for i in f:
... print i, #行尾的逗号用来抑制print的自带的回车
...
>> f.close()
15)写入文件
>> f = open('/tmp/hello.txt','w') #注意,w如果有文件,会清空
>> f.write('hello world!\n')
>> f.flush() #flush和close都有保存的功能
>> f.writelines(['1st line.\n','2nd line.\n'])
>> f.close() #flush和close都有保存的功能
16)例:读取/etc/paswd的内容,并写入到/tmp/f2.txt中
>> f1 = open('/etc/passwd')
>> data=f1.read()>> f2 = open('/tmp/passwd','w')
>> f2.write(data)>> f1.close()
>> f2.close()
md5sum /etc/passwd /tmp/passwd #检查两个文件的md5,发现一样
17)上面例子读取文件给变量data,太占用内存
下面一行一行读取,省内存
f1 = open('/etc/passwd')
f2 = open('/tmp/passwd','w')
while 1: data=f1.read(4096) #或者用f1.readline() f2.write(data) if data == '': breakf1.close()f2.close()
18)函数
>> def aaa(x, y):
... result = x + y
... return result #一般都要写返回值
...
>> aaa(1,2)
3
>> aaa(1,2)*3
9
注意:用print只能输出到屏幕,不能进行运算(因为返回值为none);要用return,返回值可以print出来,也可以进行运算
19)位置参数(python中的$1 $2 ...)
import sys
sys.argv[0] #相当于shell中$0sys.argv[1] #相当于shell中$1
20)模块与方法
先创建pp.pyhi = "hellow world!"def pstar(n=50): print "*" * n>>> import ppp #导入模块>>> ppp.hi #调用变量'hellow world!'>>> ppp.pstar() #调用函数**************************************************>>> ppp.pstar(10)**********
21)模块的属性变量:name
直接运行: main
间接运行(导入): 模块名
cat foo.pyprint __name__cat bar.pyimport foopython foo.py__main__python bar.pyfoo因此,下面的语句在模块中非常常用,直接main<tab>可自动补全if __name__ == '__main__':
22)案例:生成8位随机密码