[PYTHON] 核心编程笔记之二-Python起步

简介:

最近一直在学习python,所以把自己平时总结的笔记贴出来,供大家分享


2.1 程序输入,print语句及"Hello World"

例:取绝对值

>>>abs(-4)

4

>>>abs(4)

4


例:print输出

>>>myString = 'Hello World!'

>>>print myString

Hello World!

>>>myString

'Hello World!'

注: print语句调用str()函数显示对象,而交互式解释器则调用repr()函数显示对象


2.2 程序输入和内建函数raw_input()

例:程序输入

>>>print "%s is number %d!" %("python",1)

Python is number 1!

注:$s表示由一个字符串来替换,而%d由一个整数来替换,%f表示由一个浮点数来替换


例:将输出重定向到标准错误输出

>>>import sys

>>>print >> sys.stderr, 'Fatal error: invalid input!'

Fatal error: invalid input!


例:将输出重定向到日志文件

>>> logfile = open('~/python/log.txt','a')

>>> print >> logfile, 'fuck you!'

>>> logfile.close()


# cat ~/python/log.txt

Fatal error: invalid input!


例:获取用户输入raw_input()

>>> user = raw_input('Enter login name: ')

Enter login name: root

>>> print 'Your login name is: ',user

Your login name is:  root


例:输入一个数值字符串,并转换成整数

>>> num = raw_input('Now enter a number: ')

Now enter a number: 1024

>>> print 'Doubling your number: %d' % (int(num)*2)

Doubling your number: 2048


注:从交互式解释器中获取帮助

>>> help(raw_input)


2.3 注释

>>> # one comment

... print 'Hello World!'# another comment


特别注释

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

def foo()

"This is a doc string."

return True

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


2.4 运算符


+-*///(对结果四舍五入)

%(返回除法的余数)**(幂)


>>> print -2*4+3**2

1


<<=>>===!=<>

>>> 2 < 4

True

>>>6.2 <= 6.2.0001

True


andornot


>>>2 < 4 and 2 == 4

False

>>> 2 >4 or 2 < 4

True

>>> 3 < 4 < 5

True


注:合理使用括号增强代码可读性


2.5 变量和赋值

Python大小写敏感,为动态类型语言,不需要预先声明变量

>>> counter = 0

>>> name = "Bob"


n = n*10 可以写成 n* = 10


2.6 数字

int (有符号整数)

long (长整数)

bool (布尔值)

float (浮点值)

complex (复数)


例子:


int 0101 82 -234 0x80 -2312 -0x92

long 432423423L -4324234 0xDWADAWFFAWDAWD

bool True False

float 3.1415926 -90.2 7.2435e2

complex 6.23+1.5j -1.23-423432J


利用isinstance()函数,来判断一个对象是否是一个已知的类型:

>>>lst = []

>>>isinstance(lst, list)

True

>>>isinstance(lst, (int, str, list))

True


2.7 字符串

加号 + 用于字符串连接,星号 * 用于字符串重复


>>>pystr = 'Python'

>>>iscool = 'is cool!'

>>>pystr[0]

'P'

>>>pystr[2:5]

'tho'

>>> iscool[:2]

'is'

>>> iscool[3:]

'cool'

>>> iscool[-1]

'!'

>>>pystr + ' ' + iscool

'Python is cool!'

>>>pystr * 2

'PythonPython'


2.8 列表和元祖

列表和元祖=普通的数组,可存储不同类型的对象

列表用[]包裹,元素个数和值可以改变

元祖用()包裹,可看成是只读列表

>>> aList = [1,2,3,4]

>>> aList

[1, 2, 3, 4]

>>> aList[0]

1

>>> aList[2:]

[3, 4]

>>> aList[:3]

[1, 2, 3]

>>> aList[1] = 5

>>> aList

[1, 5, 3, 4]


元祖可进行切边运算,得到的结果也是元祖(不可修改)

>>> aTuple = ('robots',77,93,'try')

>>> aTuple

('robots', 77, 93, 'try')

>>> aTuple[:3]

('robots', 77, 93)

>>> aTuple[1] = 5

Traceback (most recent call last):

 File "<stdin>", line 1, in <module>

TypeError: 'tuple' object does not support item assignment


2.9 字典

字典是Python中映射数据类型,由键-值(key-value)对构成,所有类型的对象都可以用作键值,一般以数字和字符串作为键值

字典元素用{}包裹

>>> aDict = {'host':'earth'} # create dict

>>> aDict['port'] = 80 # add to dict        

>>> aDict

{'host': 'earth', 'port': 80}

>>> aDict.keys() # key

['host', 'port']

>>> aDict['host'] # value

'earth'

>>> for key in aDict: # 遍历key,value

...   print key,aDict[key]

...

host earth

port 80


2.10 代码块及缩进对齐

Python通过缩进对齐表达代码逻辑,而不使用大括号


2.11 if语句


if expression:

if_suite


如果表达式的值非0或布尔值为True,则代码组if_suite被执行,否则执行下一条语句


else语句:

if expression:

if_suite

else:

else_suite


elif语句:

if expression1:

if_suite

elif expression2:

elif_suite

else:

else_suite


2.12 while循环


while expression:

while_suite

语句while_suite会被连续不断的循环执行,直到表达式值变为0或False: Python才会执行下一句代码


>>> counter = 0      

>>> while counter < 3:

...   print 'loop #%d' %(counter)

...   counter += 1

...

loop #0

loop #1

loop #2


2.13 for循环和range()内建函数


Python中的for接受可迭代对象作为其参数,每次迭代其中一个元素


>>> print 'I like to use the Internet for: '

I like to use the Internet for:

>>> for item in ['e-mail','net-surfing','homework','chat']:

...   print item

...

e-mail

net-surfing

homework

chat


在print语句后面添加一个逗号(,),就可以让输出在同一行显示

>>> for item in ['e-mail','net-surfing','homework','chat']:

...   print item,

...

e-mail net-surfing homework chat


带逗号的print语句输出的元素间会自动添加一个空格

>>> who = 'knights'

>>> what = 'Ni!'

>>> print 'We are the',who, 'who say',what,what,what,what

We are the knights who say Ni! Ni! Ni! Ni!

>>> print 'We are the %s who say %s' %(who,((what + ' ') * 4))

We are the knights who say Ni! Ni! Ni! Ni!


生成一个数字序列,实现递增计数效果

>>> for eachNum in [0,1,2]:

...    print eachNum

...

0

1

2


利用range()内建函数来生成列表,实现递增计数

>>> for eachNum in range(3):

...   print eachNum

...

0

1

2


迭代每一个字符

>>> foo = 'abc'

>>> for c in foo:

...    print c

...

a

b

c


range()和len()实现用于字符串的索引,显示每一个元素及其索引值

>>> foo = 'abc'

>>> for i in range(len(foo)):

...   print foo[i], '(%d)' %i

...

a (0)

b (1)

c (2)


不过,这些循环有一个约束,你要么循环索引,要么循环元素,这导致了enumerate()函数的推出,它能同时做到这两点

>>> for i,ch in enumerate(foo):

...   print ch, '(%d)' %i

...

a (0)

b (1)

c (2)


2.13 列表解析

表示在一行中使用一个for循环将所有值放到一个列表中

>>> squared = [x ** 2 for x in range(4)]

>>> for i in squared:

...   print i

...

0

1

4

9


进阶:

>>> sqdEvens = [ x ** 2 for x in range(8) if not x %2]

>>> for i in sqdEvens:

...   print i

...

0

4

16

36


2.15 文件和内建函数open(),file()

打开文件:

handle = open(file_name,access_mode = 'r')

file_name变量为打开文件的字符串名字

access_mode中'r'表示读取,'w'表示写入,'a'表示添加.'+'表示读写,'b'表示二进制访问,如果未提供 access_mode, 默认值 'r'.

如果open()成功,一个文件对象句柄会被返回,所有后续文件操作都必须通过此文件句柄进行,当一个文件对象返回之后,我们就可以访问它的一些方法,比如readlines()和close().文件对象的方法属性也必须通过句点属性标示法访问


注: 什么是属性?

属性是与数据有关的项目,属性可以是简单的数据值,也可以是可执行对象,比如函数和方法,那些对象拥有属性呢?很多,类,模块,文件还有复数等等对象都拥有属性.

访问对象属性,使用句点属性标示法,也就是在对象名和属性名之间加一个句点:

object.attribute


例:输入文件名,然后打开一个文件,并显示它的内容到屏幕上:

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

#!/usr/bin/env python

filename = raw_input("Enter file name: ")

fobj = open(filename,'r')

for eachLine in fobj:

 print eachLine,

fobj.close()

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


2.16 错误和异常


添加错误检测及异常处理 只要将它们封装到try-except语句中,try下的代码组就是你打算管理的代码,except之后的代码,就是你处理错误的代码


#!/usr/bin/env python

try:

  filename = raw_input('Enter file name: ')

  fobj = open(filename,'r')

  for eachLine in fobj:

    print eachLine, fobj.close()

except IOError, e:

  print 'file open error:',e


2.17 函数

Python中函数使用小括号()调用,调用前必须先定义,函数中木有return语句,就会自动返回None对象


>>> def addMe2Me(x):

...     'apply + operation to argument'

...     return (x + x)

...


# 调用函数

>>> addMe2Me(4.25)

8.5

>>> addMe2Me(10)

20

>>> addMe2Me('Python')

'PythonPython'

>>> addMe2Me([-1,'abc'])

[-1, 'abc', -1, 'abc']


默认参数

表示参数调用时如果木有提供这个参数,就会取这个值作为默认值

>>> def foo(debug = True):                              

...   'determine if in debug mode with default argument'

...   if debug:                                        

...     print 'in debug mode'                          

...   print 'done'

...

>>> foo()                                              

in debug mode

done

>>> foo(False)

done


注:debug参数有一个默认值True,如果木有传参,debug会自动拿到True值,返回函数内的结果,如果传一个参数False,默认参数就木有使用


2.18 类


面向对象编程,扮演相关数据及容器的角色


定义类


class ClassName(base_class[es])

"optional documentation string"

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

#!/usr/bin/env python

class FooClass(object):

 '''my very first class: FooClass'''

 version = 0.1 # 定义静态变量

 def __init__(self,nm='John Doe'): # 自定义一个__init__方法

   '''constructor'''

   self.name = nm

   print 'Createed a class instance for',nm

 def showname(self): # 定义一个方法,并对自身引用

   '''display instance attribute and class name'''

   print 'Your name is', self.name

   print 'My name is', self.__class__.__name__

 def showver(self):

   '''display class(static) attribute'''

   print self.version

 def addMe2Me(self,x):

   '''apply + operation to argument'''

   return x + x


# 调用__int__()方法

fool = FooClass()

# 调用showname()方法

fool.showname()

fool.showver()

print fool.addMe2Me(5)

print fool.addMe2Me('xyz')

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


# python test.py

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

# 调用__int__()的返回结果

Createed a class instance for John Doe

# 返回showname()方法结果

Your name is John Doe

My name is FooClass

0.1

10

xyzxyz

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


2.19 模块


模块将彼此有关系的代码组织到一个独立文件中


当你创建了一个Python源文件,模块的名字就是不带 .py后缀的文件名,一个模块创建之后,可以从另一个模块中使用import 语句导入这个模块来使用


例:

>>> import sys

# write()不会自动在字符串后面添加换行符号

>>> sys.stdout.write('Hello World!\n')

Hello World!

>>> sys.platform

'linux2'

>>> sys.version

'2.7.3 (default, Sep 26 2012, 21:51:14) \n[GCC 4.7.2]'


2.20 实用的函数


函数描述

dir([obj])显示对象的属性,如果没有提供参数,则显示全局变量的名称

help([obj])以一种整齐美观的形式 显示对象的文档字符串,如果没有提供参数,则会进入交互式帮助  

int(obj)将一个对象转换为整数

len(obj)返回对象的长度

open(fn,mode)以mode('r' = 读, 'w'=写)方式打开一个文件名为fn的文件

range([[start,]stop[,step])返回一个整数列表,起始值为 start,结束值为stop - 1;start默认值为0,step默认值为1

raw_input(str)等待用户输入一个字符串,可以提供一个可选的参数str用作提示信息

str(obj)将一个对象转换为字符串

type(obj)返回对象的类型(返回值本身是一个type对象!)  


     本文转自 showerlee 51CTO博客,原文链接:http://blog.51cto.com/showerlee/1330260,如需转载请自行联系原作者



相关文章
|
6天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
6天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
6天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
8天前
|
设计模式 算法 搜索推荐
Python编程中的设计模式:优雅解决复杂问题的钥匙####
本文将探讨Python编程中几种核心设计模式的应用实例与优势,不涉及具体代码示例,而是聚焦于每种模式背后的设计理念、适用场景及其如何促进代码的可维护性和扩展性。通过理解这些设计模式,开发者可以更加高效地构建软件系统,实现代码复用,提升项目质量。 ####
|
7天前
|
机器学习/深度学习 存储 算法
探索Python编程:从基础到高级应用
【10月更文挑战第38天】本文旨在引导读者从Python的基础知识出发,逐渐深入到高级编程概念。通过简明的语言和实际代码示例,我们将一起探索这门语言的魅力和潜力,理解它如何帮助解决现实问题,并启发我们思考编程在现代社会中的作用和意义。
|
8天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
8天前
|
人工智能 数据挖掘 程序员
Python编程入门:从零到英雄
【10月更文挑战第37天】本文将引导你走进Python编程的世界,无论你是初学者还是有一定基础的开发者,都能从中受益。我们将从最基础的语法开始讲解,逐步深入到更复杂的主题,如数据结构、面向对象编程和网络编程等。通过本文的学习,你将能够编写出自己的Python程序,实现各种功能。让我们一起踏上Python编程之旅吧!
|
9天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第36天】本文将带你走进Python的世界,从基础语法出发,逐步深入到实际项目应用。我们将一起探索Python的简洁与强大,通过实例学习如何运用Python解决问题。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供有价值的指导和灵感。让我们一起开启Python编程之旅,用代码书写想法,创造可能。
|
11天前
|
设计模式 程序员 数据处理
编程之旅:探索Python中的装饰器
【10月更文挑战第34天】在编程的海洋中,Python这艘航船以其简洁优雅著称。其中,装饰器作为一项高级特性,如同船上的风帆,让代码更加灵活和强大。本文将带你领略装饰器的奥秘,从基础概念到实际应用,一起感受编程之美。
|
10天前
|
分布式计算 并行计算 大数据
Python编程中的高效数据处理技巧
Python编程中的高效数据处理技巧
27 0