python午后茶(一)

写在前面的话:

通过花费15分钟(上个大号绰绰有余吧)的时间,新手对python会有一个大概的印象吧。

这篇文章是模仿陈皓大牛的一篇文章的格局写的:http://coolshell.cn/articles/10739.html.或者自行搜索:lua site:coolshell.cn

python位列3P(perl,php,python)之一。业界这样定义它:1)脚本语言:2)胶水语言:

阅读了<a  byte of python>之后,留下这篇文章做个备忘录,

这本99页的小册子描述的是老版本的python2.3,我的ubuntu自带python2.7.6

且放白鹿青牙间:

1)tips:

python声明变量是动态的,a=1,a=‘hhh‘完全是运行后才知道变量的类型

ubuntu下输入python进入python模式,输入exit()退回到ubuntu.

1)print语句自动换行,如果你加了‘\n‘,那么程序就会连换两行.

2)输出变量,采用%表明变量.

3)井号单行注释:#print(‘so i cannot print this line‘)

三个单引号或者三个双引号多行注释:‘‘‘print(‘so i cannot print these lines‘)‘‘‘

4)运行环境:在windows下,安装python,打开python.exe,就可以运行命令了,E:\python\Doc\ 这里面还有ptyhon手册。

在linux下,自带python的说,我是换源之后,系统更新就有了ptyhon2.7(关于换源,可以google: 换源 site:oschina.net)

5)涉及路径名的时候,如果出现中文字符,可能会遇到乱码情况。(事实上,我还是遇到中文问题,所以我决定不用中文)解决如下:

在代码第一行加入:# This Python file uses the following encoding: utf-8

1.1  打印

a=‘hello world‘
print‘hello world‘    python3.x不支持老版本
print(‘hello world‘)    新版本
print(a)
          | |hello world
python就像string类一样,自动执行+=操作,join操作为括号里的每个字符执行一个+=操作
print(‘hhh‘,a,‘hhh‘)
print(‘hhh‘,a,‘aaa‘.join(‘hhh‘))
       ||hhh hello world hhh
       ||hhh hello world haaahaaah

注意下面的逗号和百分号
print(‘what is a:‘,a)
print(‘print twice a :%s,%s‘ %(a,a))
       | |what is a: hello world
       | |print twice a :hello world,hello world

1.2 数据类型:

1.2.1数字类型:int ,    long int,      float(2.3e-3==2.3*0.001),      complex(复数:-5+4j)

1.2.2字符串:

单引号:a=‘hello world‘   | |  hello world

双引号:
a=‘‘hello world‘‘    | |  hello world

三个单引号:a=‘‘‘hello world‘‘‘

1.3 操作符:

>>>2*3

|  |6

2)控制语句
:

每一次语句后面都要加冒号:。句末不用分号也可以。

顺序。

选择:if   A:

elif B:

else:

循环:while True:

do sth

break

这里的loop循环中的range,只能用于整形

>>> for i in range(1,5):
    print(i)
else:
    print(‘loop over‘)

1
2
3
4
loop over
usrName=[‘allen‘,‘allen2‘] #这是一个List数据结构
while True:
    s=input(‘please enter your name :‘)
    for checkName in usrName:
        if s==checkName:
            print(‘weclome:%s‘ %s)
            break
        elif s==‘root‘:
            print(‘weclime:‘,s)
            break
    s2=input(‘enter q to quit:‘)
    if s2==‘q‘:
        print(‘get away!~!‘)
        break

如果要一探究竟,可以自己练习一遍。

3)函数和模块:

函数之无参数函数

def syHi():
    print(‘i am allen.lidh‘)
syHi()

>>>
i am allen.lidh

函数之缺省值参数:缺省参数的右边的参数必须全部都有缺省值。(编译器从左至右匹配参数,只有在被传递的参数匹配完毕后,

编译器才会去看变量是不是有缺省值)

def syHi(a=1,b,c)
#这样定义是错的

def syHi(a,b=4,c=5):
    print(‘a:‘,a,‘b:‘,b,‘c:‘,c)
syHi(1,2)

>>>
a: 1 b: 2 c: 5

参数之局部和全局变量

def syHi(x):
    x=3
    global y
    y=22

x=7
y=77
syHi(x)
print(‘x:‘,x,‘y:‘,y)

输出:

>>> x: 7 y: 22

模块之间的调用:

1)import pyFile,不能引用数字开头的文件名。import 01这是错误的。import one will be nice

首先在two.py中有如下:

#two.py

def sayhi():

print(‘i am from two.py‘)

version=0.2

我么再在1.py中作模块之间的调用.

模块之import pyFile

import two
two.sayhi()
print(two.version)

>>>
i am from two.py
0.2
    

模块之from pyFile import var1,func1

from two import sayhi,version
sayhi()
print(version)

>>>
i am from two.py
0.2

4)数据结构:

------------------------------------------------------------------------------------------------------------

List(链表。中文翻译没意思,图个好理解)|  Tuple(数组) |  Dictionary(字典:键值对)

链表比较随意,元素可以删增也可以赋值,但数组不可以:immutable like string.

------------------------------------------------------------------------------------------------------------

List:

>>> myList=[‘item1‘,‘item2‘]
>>> myList.append(‘item3‘)
>>> print(‘length:‘,len(myList),‘list[0]:‘,myList[0])
(‘length:‘, 3, ‘list[0]:‘, ‘item1‘)
>>> del myList[0]
>>> myList.sort()
>>> for i in myList:print i
...
item2
item3

Tuple:

>>> myTuple=(‘item1‘,‘item2‘)
>>> yourTuple=(‘item3‘,myTuple)
>>> print(yourTuple[1][0])
item1

DIctionary:

>>> myDic={‘happy‘:‘laughing‘,
...                ‘sad‘:‘laughed‘}
>>> #add a key-value item
... myDic[‘sb‘]=‘no-brain‘
>>> del myDic[‘sad‘]
>>> for me,you in myDic.items():
...        print(‘me:‘,me,‘ while you ‘,you)
...
(‘me:‘, ‘sb‘, ‘ while you ‘, ‘no-brain‘)
(‘me:‘, ‘happy‘, ‘ while you ‘, ‘laughing‘)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

注意:如果要进一步了解这些数据结构,在ubuntu下输入python,然后输入help(tuple),超详细。

以tuple为例:

>>> a=tuple()
>>> a
()
>>> a=tuple(‘hahah‘)
>>> a
(‘h‘, ‘a‘, ‘h‘, ‘a‘, ‘h‘)
>>> b=a+a
>>> b
(‘h‘, ‘a‘, ‘h‘, ‘a‘, ‘h‘, ‘h‘, ‘a‘, ‘h‘, ‘a‘, ‘h‘)
>>> for i in a: print i
...
h
a
h
a
h
>>> b==a
False
>>> b>=a
True
>>> 

--------------------------------------------------------------------------------------------------------------------------------------------------------

5)写脚本

在大家都说不清楚的大数据时代和云计算时代,做linux运维应该蛮好的,事实上,我也想这样。写脚本应该是运维工作的基础的。

下面这个脚本,将/home/allen-li/hhh.gif‘ 文件名改成 ‘/home/allen-li/allen_lidh.gif‘

import os
source=‘/home/allen-li/‘
fileName=raw_input(‘enter the file you want to operate on:‘)
#这里其实应该有个检测文件名合法性的操作

src_file=source+fileName+‘.gif‘
des_file=source+‘allen_lidh‘+‘.gif‘
myCommand="mv ‘%s‘ ‘%s‘ " %(src_file,des_file)      #unix命令行
print(myCommand)
if os.system(myCommand)==0:
	print‘return True‘
else:
	print ‘return False‘

输出:输出的结果就是这张gif的名字发生改变

[email protected]:~$ python /home/allen-li/mypy1.py
enter the file you want to operate on:hhh
mv ‘/home/allen-li/hhh.gif‘ ‘/home/allen-li/allen_lidh.gif‘
return True

这张gif让我笑到爆,不过图片太大传不了,只好截图吧

6)面向对象:继承

注意点:

__init()__就是完成类的初始化工作,类似于C++的构造函数

self可以推之以C++的this的指针

class A(B):表示A继承于B

class Person:
	def __init__(self,name,sex):
		self.name=name
		self.sex=sex
	def syHi(self):
		print ("name:‘%s‘ sex:‘%s‘" %(self.name,self.sex));
class Student(Person):
	def __init__(self,name,sex,sid):
		Person.__init__(self,name,sex)
		self.sid=sid
	def syHi(self):
		Person.syHi(self)
		print("sid:‘%s‘" %self.sid)
class Teacher(Person):
	def __init__(self,name,sex,tid):
		Person.__init__(self,name,sex)
		self.tid=tid
	def syHi(self):
		Person.syHi(self)
		print("tid:‘%s‘ " %self.tid)

s=Student(‘allen.lidh2‘,‘boy2‘,100)
t=Teacher(‘allen.lidh3‘,‘boy3‘,100100)
s.syHi()
t.syHi();

输出:

[email protected]:~$ python /home/allen-li/桌面/mypy1.py
name:‘allen.lidh2‘ sex:‘boy2‘
sid:‘100‘
name:‘allen.lidh3‘ sex:‘boy3‘
tid:‘100100‘ 

7)文件操作与异常

import time
try:
	f=file(‘/home/allen-li/桌面/allen.lidh.txt‘,‘wb+‘)    #这里的file和下面的open有什么区别?
	s="hello i am allen.lidh \n in shu"
        #	f.write(bytes(s,"utf-8"))     #这是python 3.X的写法
        f.write(s)                            #写和读不能同时进行,学过os就应该知道这是缓冲区没有及时刷新
        f=open(‘/home/allen-li/桌面/allen.lidh.txt‘,‘wb+‘)
	while True:
		#line=f.readline()
		line=f.read(16)               #16个字节读一次
		if len(line)==0:
			break
		print(line)
finally:

	f.close()
	print(‘bye:%s‘ %time.strftime(‘%Y-%m-%d-%H-%M‘))    #时间函数
>>>
[email protected]:~$ python /home/allen-li/桌面/mypy1.py
hello i am allen
.lidh
 in shu
bye:2014-04-30-00-42

8)类裤:

隔壁的同学买了一本关于python library超厚的书,我不禁缩了。。。

作为弥补,贴了Lambda的例子吧,C++11把这个特性列为标准了。

def makeTwice(n):
	return lambda s:s*n
twice=makeTwice(2)

print(twice(7))
print(twice(‘hhh‘))

>>>
[email protected]:~$ python /home/allen-li/桌面/mypy1.py
14
hhhhhh
#感觉这个跟正则一样走的非主流,

写在后面的话:

写博客真的耗时间,所以说懂得抓主干会让你多活20年,显然这篇博客跟shi一样杂乱无章且水。

感觉语言一通百通,因为他们提供给我么的功能大同小异。在繁杂的语言中,懂得抽象则清风自来,尽情盛开。

学习python的一点资料:

a byte of python

外文网址一

w3school

python午后茶(一),码迷,mamicode.com

时间: 2025-01-10 23:56:26

python午后茶(一)的相关文章

网站更加人性化---让PHP判断时间和星期

程序人性化,网站人性化,是程序员的追求,比如设计PHP网站,在页面当中添加一段这样的代码,也许会更加的人性化.利用php的简单判断和读取当前时间写的一个小玩意.这虽是无聊之举,但感觉良好. 添加一段人性化的提醒,代码如下: <?php date_default_timezone_set('PRC'); //设置中国时区 if(0<=date('H') && date('H') <7){ echo "凌晨好!夜深了,早点休息吧!"; } if(7<

python学习笔记2

Pycharm 的使用 IDE(Integrated  Development  Environ ment) :集成开发环境 Vim  :经典的linux下的文本编辑器(菜鸟和大神喜欢使用) Emacs :linux 文本编辑器,比VIM更容易使用. Eclipse :Java  IDE,同时也支持Python,c,c++ Visual Studio :微软开发的IDE,支持python,c++,java,c# Notepad++ : 支持python Sublim: Python开发的 Pyc

Python获取当地的天气和任意城市的天气

先从中国天气网得到数据('http://www.weather.com.cn/data/cityinfo/'+城市编码),每个城市都有各自的编码,如何得到用户所在地的城市编码呢?用一个网页就是专门干这个的!http://61.4.185.48:81/g/ 附录:所有城市的编码 101010100=北京 101010200=海淀 101010300=朝阳 101010400=顺义 101010500=怀柔 101010600=通州 101010700=昌平 101010800=延庆 1010109

Python 新浪微博中提取最常见转载的微博转载了几次,username,内容

CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-7-4 @author: guaguastd @name: findPopularRepost.py ''' if __name__ == '__main__': #import json # get weibo_api to access sina api from sinaWeiboLogin import sinaWeiboLogin sinaWeiboA

windows下python web开发环境的搭建

windows下python web开发环境: python2.7,django1.5.1,eclipse4.3.2,pydev3.4.1 一. python环境安装 https://www.python.org/ftp/python/2.7/python-2.7.amd64.msi 不多说,装完后把C:\Python27加入到path环境变量里. 然后就溜溜python,看看version啦.OK,next step. 二. python web开发框架django安装 django是一个采用

安装python 的PIL库遇到的问题

首先,用pip install 和pip3 install安装时,报错:Fatal error in launcher: Unable to create process using '"' 查询资料,得知python2.7 与 python3.5共存时,要用以下命令: python2 -m pip install XXX python3 -m pip install XXX 然而,继续报错: Could not find a version that satisfies the require

六行python代码的爱心曲线

喔家ArchiSelf 前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在Excel上拟合正态分布了,尽管在第二天重新拾起了Excel中那几个常见的函数和图像的做法,还是十分的惭愧.实际上,当时有效偏颇了,忽略了问题的本质,解决数据分析和可视化问题,其实也是Python的拿手好戏. 例如,画出指定区间的一个多项式函数: Python 代码如下: import numpy as np import matplotlib.pyplot as plt X = np.linspace(-4, 4

Python基础教程【读书笔记】 - 2016/7/24

希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第九波:第9章  魔法方法.属性和迭代器  在Python中,有的名称会在前面和后面都加上两个下划线,这种写法很特别.已经出现过一些这样的名称(比如__future__),这种拼写表示名字有特殊含义,所有绝不要在自己的程序中使用这种名字. 在Python中,由这些名字组成的集合所包含的方法称为魔法方法(或称特殊方法).如果对象实现了这些方法中的某一个,那么这个方法会在特殊的情况下被Python调用,而几乎没有直接调用

[零基础学python]开始真正编程

通过对四则运算的学习,已经初步接触了Python中内容,如果看官是零基础的学习者,可能有点迷惑了.难道在IDE里面敲几个命令,然后看到结果,就算编程了?这也不是那些能够自动运行的程序呀? 的确.到目前位置,还不能算编程,只能算会用一些指令(或者叫做命令)来做点简单的工作.并且看官所在的那个IDE界面,也是输入指令用的. 列位稍安勿躁,下面我们就学习如何编写一个真正的程序.工具还是那个IDLE,但是,请大家谨记,对于一个真正的程序来讲,用什么工具是无所谓的,只要能够把指令写进去,比如用记事本也可以