[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,如需转载请自行联系原作者



相关文章
|
2月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
2月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
126 80
|
21天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
51 14
|
2月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
109 2
|
2月前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
64 10
|
2月前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
2月前
|
关系型数据库 开发者 Python
Python编程中的面向对象设计原则####
在本文中,我们将探讨Python编程中的面向对象设计原则。面向对象编程(OOP)是一种通过使用“对象”和“类”的概念来组织代码的方法。我们将介绍SOLID原则,包括单一职责原则、开放/封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则有助于提高代码的可读性、可维护性和可扩展性。 ####
|
2月前
|
人工智能 数据挖掘 开发者
探索Python编程之美:从基础到进阶
本文是一篇深入浅出的Python编程指南,旨在帮助初学者理解Python编程的核心概念,并引导他们逐步掌握更高级的技术。文章不仅涵盖了Python的基础语法,还深入探讨了面向对象编程、函数式编程等高级主题。通过丰富的代码示例和实践项目,读者将能够巩固所学知识,提升编程技能。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考和启示。让我们一起踏上Python编程的美妙旅程吧!

热门文章

最新文章