Python快速入门

一、基础概要

命名:h.py

Linux命令行运行:python h.py

注释、数字、字符串:

基本类型只有数字与字符串

#python注释是这样写的
'''
当然也可以这样
'''
"""
或者这样""" #数字分为整数和浮点数
#浮点数可以这样:
a = 3.14E-4 #而字符串和Java中的一样,是不可变的,在Python中一切都是对象
#字符串,数字常量也一样,意思是可以直接对它使用方法

格式化方法:

age = 20
name = 'Swaroop'
print('{0} was {1} years old when he wrote this book'.format(name, age))
print('Why is {0} playing with that python?'.format(name))
#这样也行:
print('{} was {} years old when he wrote this book'.format(name, age))
#对于浮点数'0.333'保留小数点后三位
# 使用下划线填充文本,并保持文字处于中间位置
# 使用 (^) 定义 '___hello___'字符串长度为 11
print('{0:_^11}'.format('hello'))
# 基于关键词输出 'Swaroop wrote A Byte of Python'
print('{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python')) #禁用自动换行,end 指定用什么结尾,默认为换行符
print('a', end='')

转义序列'\':

在Python中'\'除了用作转移序列外,可以表示下一行继续,而不添加新一行。

"This is the first sentence. \
This is the second sentence."
#相当于
"This is the first sentence. This is the second sentence." i = \
5
#相当于
i = 5

原始字符串:

在字符串前用R或者r表示原始字符串,所谓原始字符串,跟bash shell中单引号效果相同

R'Hello, how are you.\n'  #这里的'\n'不会导致换行

逻辑行、物理行、缩进

二、运算符与表达式

大体同其他语言相同,只对不同的地方做说明。

1. '//'表示整除,对结果进行向下取整

如:13//3  输出4        -13//3输出-5

2.not 布尔非    or布尔或     and布尔与

3.求值顺序:   lambda表达式------>if  else表达式-------->布尔或-->与--->非...........

length = 5
breadth = 2
area = length * breadth
print('Area is', area)
print('Perimeter is', 2 * (length + breadth))
#输出:
'''
Area is 10
Perimeter is 14'''
#注意自动加空格

三、控制流

if

#! /usr/bin/python3
num = 35
guess = int(input('Input a number please:'))
if guess == num:
print('equal')
elif guess > num: #特别注意 else if 的python写法
print('>')
else:
print('<')
print('Game Over!')

另外Python中不存在switch

while:

while bol:
#do sth
else:
#do others
#特别注意可以使用else从句

for:

注意python中没有C形式的for(int i=0; i < 10;i++)的for,取而代之的是

for i in range(1,5):
print(i)
else:
#do others
#注意同样也有else从句

break和continue:

注意:如果用break中断了for或者while语句,else从句一样也不会执行

四、函数

1.用def关键字定义一个函数

2.局部变量:在函数内部中定义的变量,同Java方法中的变量类似,只存在于函数这一局部

如果想在函数或者类的内部给一个顶层变量赋值,可使用global语句(当然能不使用global就不要使用它)。

#! /usr/bin/python3
x = 8
def fun():
global x
print('the x that not changed is',x) #
x = 9
print('change x to',x) #
fun()
print('Now the x is',x) #

默认参数值:

#! /usr/bin/python3
def say(msg,times=1,c=5): #参数列表中拥有默认参数值的参数不能位于无默认参数值的参数前面
print(msg * times)
print(c)
say('hi')
say('hi',3)
say(c=8,times=5,'sss') #我们使用标识符而非参数位置来指定函数中的参数

可变参数:

#! /usr/bin/python3
def fun(a=88,*itmes,**maps):
print('a={}'.format(a))
for itme in itmes:
print('item is',itme)
for m, n in maps.items():
print('map is',m,n)
fun(99,1,2,3,4,5,6,tang=555,jia=666,pi=888)
'''
a=99
item is 1
item is 2
item is 3
item is 4
item is 5
item is 6
map is pi 888
map is jia 666
map is tang 555
'''

注意:形参前一个'*'代表元组,两个代表字典

文档字符串(DocStrings):

函数、模块与类的第一逻辑行的字符串为逻辑字符串

#! /usr/bin/python3
def print_max(x, y):
'''Print the max of two numbers
The two values must be integers.'''
x = int(x)
y = int(y)
if x > y:
print(x, 'is max number.')
elif y > x:
print(y, 'is max number')
else:
print(x+' is equal to '+y)
print_max(5,8)
print(print_max.__doc__) #通过print_max.__doc__获取文档字符串,记住python中的一切都是对象

五、模块

编写模块方式:

1.写一个.py

2.用Python解释器本身的本地语言来编写模块。

导入模块语法:

首先要注意导入模块时,Python解释器首先从sys.path目录(当前目录即程序的启动目录也是其一部分)进行搜索

1.import modulName

2.from modulName import sth(尽量避免使用)

如果想更快地导入模块,可以先把模块编译成对应的.pyc

每个模块都定义的它的__name__属性,如果该属性为'__main__'则代表这一模块是由用户独立运行。

dir()函数能够返回由对象所定义的名称列表,如果该对象为模块文件,则该列表会包括模块所定义的函数、类与变量。

包是指一个包含模块与特殊__init.py__文件的文件夹,后者向Python表明该文件夹是一个包。

六、数据结构

Python中有四种内置的数据结构:列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)

List

列表是一种用于保存有序项目的可变集合,此外可以向列表添加任何对象

#! /usr/bin/python3
a = ['apple','banana','orange']
#增
a.append('rice')
#删
del a[1]
#改
a[0] = 'noodle'
for item in a:
print(item,end = '|')

Tuple

元组,可以理解为不可变的列表

#! /usr/bin/python3
zoo = ('Java','Kotlin','Bash Shell','Python','JavaScript')
new_zoo = ('C','C++','C#',zoo)
print(new_zoo[3][3])

Dictionary

类似Java中的map集合,键值对集合,注意只可使用不可变的对象作为键。

war = {
'tang':'God like man',
'Tom':'Cat',
'Jerry':'mouse'
}

使用in运算符检验键值对是否存在

序列

List、Tuple和字符串都可以看作序列(Sequence)的某种表现形式。

序列的主要功能是资格测试(Membership Test) (也就是 in 与 not in 表达式) 和索引
操作(Indexing Operations) ,它们能够允许我们直接获取序列中的特定项目。

上面所提到的序列的三种形态——列表、元组与字符串,同样拥有一种切片(Slicing) 运算
符,它能够允许我们序列中的某段切片——也就是序列之中的一部分。

shoplist = ['apple', 'mango', 'carrot', 'banana']
name = 'swaroop'
# Indexing or 'Subscription' operation #
# 索引或“下标(Subscription) ”操作符 #
print('Item 0 is', shoplist[0])
print('Item 1 is', shoplist[1])
print('Item 2 is', shoplist[2])
print('Item 3 is', shoplist[3])
print('Item -1 is', shoplist[-1])
print('Item -2 is', shoplist[-2])
print('Character 0 is', name[0])
# Slicing on a list #
print('Item 1 to 3 is', shoplist[1:3])
print('Item 2 to end is', shoplist[2:])
print('Item 1 to -1 is', shoplist[1:-1])
print('Item start to end is', shoplist[:])
# 从某一字符串中切片 #
print('characters 1 to 3 is', name[1:3])
print('characters 2 to end is', name[2:])
print('characters 1 to -1 is', name[1:-1])
print('characters start to end is', name[:])

Set

即简单对象的无序集合。 集 合 是 一 个 无 序 不 重 复 元素 的 集 。 基 本 功 能 包 括 关 系 测 试 和 消 除 重 复 元 素 。 集 合 对 象 还 支 持 union( 联
合),intersection(交),difference(差)和 sysmmetric difference(对称差集)等数学运算.

大括号或 set() 函数可以用来创建集合。 注意:想要创建空集合,你必须使用set() 而不是 {} 。{}用于创建空字典

 a={"peace","peace","rong","rong","nick"}
print(a)
"peace" in a
b=set(["peace","peace","rong","rong"])
print(b)
#演示联合
print(a|b)
#演示交
print(a&b)
#演示差
print(a-b)
#对称差集
print(a^b)
#输出:
{'peace', 'rong', 'nick'}
{'peace', 'rong'}
{'peace', 'rong', 'nick'}
{'peace', 'rong'}
{'nick'}
{'nick'}

引用

print('Simple Assignment')
shoplist = ['apple', 'mango', 'carrot', 'banana']
# mylist 只是指向同一对象的另一种名称
mylist = shoplist
# 我购买了第一项项目,所以我将其从列表中删除
del shoplist[0]
print('shoplist is', shoplist)
print('mylist is', mylist)
# 注意到 shoplist 和 mylist 二者都
# 打印出了其中都没有 apple 的同样的列表,以此我们确认
# 它们指向的是同一个对象
print('Copy by making a full slice')
# 通过生成一份完整的切片制作一份列表的副本
mylist = shoplist[:]
# 删除第一个项目
del mylist[0]
print('shoplist is', shoplist)
print('mylist is', mylist)
# 注意到现在两份列表已出现不同

七、面向对象编程

对象可以使用属于它的普通变量来存储数据。这种从属于对象或类的变量叫作字段
(Field) 。对象还可以使用属于类的函数来实现某些功能,这种函数叫作类的方法
(Method) 。这两个术语很重要,它有助于我们区分函数与变量,哪些是独立的,哪些又是
属于类或对象的。总之,字段与方法通称类的属性(Attribute)。

#! /usr/bin/python3
class Person:
#所谓构造函数,类中的方法都必须有self参数
def __init__(self, name):
self.name = name
def say_hi(self):
print('Hello, my name is',self.name)
Person('Tom').say_hi()

类变量与对象变量

不解释,上代码:

class Roboot:
#定义一个类变量
count = 0
def __init__(self,name):
#这里self.name就是一个对象变量
self.name = name
print('Creating {}'.format(self.name))
#改变一个类变量,也可用:self.__class__.count引用
Roboot.count += 1
def destroy(self):
print("Destroying {}".format(self.name))
Roboot.count -= 1
#定义一个类方法
@classmethod
def how_many(cls):
print("We have {:d} roboots.".format(cls.count)) tom = Roboot('Tom')
jerry = Roboot('Jerry')
#调用类方法:
Roboot.how_many()
tom.destroy()
dog = Roboot('Dog')
wore = Roboot('Wore')
Roboot.how_many()

注意:Python中所有的类变量默认都是公有的,要使类变量成为私有必须'__varName',即变量名前加两下划线。

继承

class Schooler:
def __init__(self, name, age):
self.name = name
self.age = age
print('Creating Schooler: {}'.format(self.name))
def tell(self):
print('Name: {} Age:'.format(self.name, self.age), end=' ') class Teacher(Schooler):
#如果子类不定义一个__init__函数,将会继承父类的
def __init__(self, name, age, salary):
#子类必须显式地调用父类构造函数,父类构造函数才会被调用
Schooler.__init__(self, name, age)
self.salary = salary
print('Creating Teacher: {}'.format(self.name))
def tell(self):
#当调用同名方法时,python总会先从子类中寻找方法
Schooler.tell(self)
print('Salary: {:d}'.format(self.salary))
Schooler('Tom',22).tell()
Teacher('Jack',33,8000).tell()

类中的特殊方法:

__init__(self, ...)
这一方法在新创建的对象被返回准备使用时被调用。
__del__(self)
这一方法在对象被删除之前调用(它的使用时机不可预测,所以避免使用它)
__str__(self)
当我们使用 print 函数时,或 str() 被使用时就会被调用。
__lt__(self, other)
当小于运算符(<) 被使用时被调用。类似地,使用其它所有运算符(+、> 等等)
时都会有特殊方法被调用。
__getitem__(self, key)
使用 x[key] 索引操作时会被调用。
__len__(self)
当针对序列对象使用内置 len() 函数时会被调用

八、输入与输出

用户输入

处理用户输入可用input()函数,该函数返回用户的输入

文件

通过创建文件类,并调用read(),write()及其readLine()函数

#! /usr/bin/python3
poem = '''\
Come as you are.
As you were
Hurry up......
Nirvana
'''
#打开文件编辑(w),还有r,a(追加)
f = open('poem.txt','w')
f.write(poem)
f.close() #默认以读的方式打开,文件不存在会新建一个
f = open('poem.txt')
while True:
line = f.readline()
#长度为0到达文件末尾
if len(line) == 0:
break
#注意,每行末尾都有换行符
print(line, end = '')
f.close()

使用Pickle模块,可以向文件写入python对象

#! /usr/bin/python3
import pickle listf = 'list.data'
shoplist = ['apple','mango','banana']
#写入二进制'wb'
f = open(listf, 'wb')
#存储对象到文件
pickle.dump(shoplist, f)
f.close() del shoplist
f = open(listf, 'rb')
#从文件中载入对象
slist = pickle.load(f)
print(slist)

九、异常

使用try...except处理异常

try:
text = input('Enter something --> ')
except EOFError:
print('Why did you do an EOF on me?')
except KeyboardInterrupt:
print('You cancelled the operation.')
else:
print('You entered {}'.format(text))

使用raise语句来抛出异常,能够抛出的异常必须是Exception的派生类

class ShortInputException(Exception):
'''一个由用户定义的异常类'''
def __init__(self, length, atleast):
Exception.__init__(self)
self.length = length
self.atleast = atleast
try:
text = input('Enter something --> ')
if len(text) < 3:
raise ShortInputException(len(text), 3)
# 其他工作能在此处继续正常运行
except EOFError:
print('Why did you do an EOF on me?')
except ShortInputException as ex:
print(('ShortInputException: The input was ' +
'{0} long, expected at least {1}')
.format(ex.length, ex.atleast))
else:
print('No exception was raised.')

try...finally

#! /usr/bin/python3
import sys
import time f = None
try:
f = open('poem.txt')
while True:
line = f.readline()
if len(line) == 0:
break
print(line,end='')
sys.stdout.flush()
print('Press ctrl+c now')
time.sleep(2)
except IOError:
print('Could not find file poem.txt')
except KeyboardInterrupt:
print('You cancelled the reading from the file.')
finally:
if f:
f.close()
print('Closed the file.')

关闭文件操作交给with...open来完成

with open("poem.txt") as f:
for line in f:
print(line, end='')

十、其他

列表推导

从一份现有的列表得到新的列表

listone = [2, 3, 4]
listtwo = [2*i for i in listone if i > 2]
print(listtwo)

断言

当断言失败就会抛出AssertionError

>>> mylist = ['item']
>>> assert len(mylist) >= 1
>>> mylist.pop()
'item'
>>> assert len(mylist) >= 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError

Python快速入门的更多相关文章

  1. python快速入门及进阶

    python快速入门及进阶 by 小强

  2. Python快速入门PDF高清完整版免费下载|百度云盘

    百度云盘:Python快速入门PDF高清完整版免费下载 提取码:w5y8 内容简介 这是一本Python快速入门书,基于Python 3.6编写.本书分为4部分,第一部分讲解Python的基础知识,对 ...

  3. Python快速入门之与C语言异同

    代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达到快速入门的目的.下面将开始介绍它们的异同. ...

  4. 1、Python快速入门(0529)

    学习来自马哥教育的视频,感谢马哥 编程语言: 用户: 问题空间 计算机:解决问题 解空间 抽象: 机器代码-->微码编程-->高级语言 (语言的高下级的是根据语言是否被人类容易理解或者更接 ...

  5. python快速入门——进入数据挖掘你该有的基础知识

    这篇文章是用来总结python中重要的语法,通过这些了解你可以快速了解一段python代码的含义 Python 的基础语法来带你快速入门 Python 语言.如果你想对 Python 有全面的了解请关 ...

  6. Python与C语言基础对比(Python快速入门)

    代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3 如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达到快速入门的目的.下面将开始介绍它们的异同 ...

  7. 第02章 Python快速入门

    007.快速入门,边学边用 008.变量类型 print(type(变量))    查看变量的了类型     现在常用的变量的类型有整型.浮点型.字符型 009.List基础模块 类型转换:str(8 ...

  8. 「数据挖掘入门系列」Python快速入门

    Python环境搭建 本次入门系列将使用Python作为开发语言.要使用Python语言,我们先来搭建Python开发平台.我们将基于Python 2.7版本.以及Python的开发发行版本Anaco ...

  9. python 快速入门

    根据以下几个步骤来快速了解一下python,目标是可以利用python来处理一些简易的问题或者写一些工具.   1.编写Hello world 2.学习 if,while,for 的语法 3.学习该语 ...

随机推荐

  1. A^B Mod C

    A^B Mod C 时间限制: 1 Sec  内存限制: 32 MB Problem Description 给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = ...

  2. 在一些开源框架中,dist文件夹是什么意思

    全称是distribution. distribution英 [dɪstrɪ'bjuːʃ(ə)n]美 ['dɪstrə'bjʊʃən]: 发行版 n. 分布:分配 在某些框架中,因为开发和发布是的内容 ...

  3. 什么是 TCP 拆、粘包?如何解决(Netty)

    前言 记得前段时间我们生产上的一个网关出现了故障. 这个网关逻辑非常简单,就是接收客户端的请求然后解析报文最后发送短信. 但这个请求并不是常见的 HTTP ,而是利用 Netty 自定义的协议. 有个 ...

  4. 常见的爬虫分析库(2)-xpath语法

    xpath简介 1.xpath使用路径表达式在xml和html中进行导航 2.xpath包含标准函数库 3.xpath是一个w3c的标准 xpath节点关系 1.父节点 2.子节点 3.同胞节点 4. ...

  5. SQLSERVER 数据量太大,重启服务器后,数据库显示正在恢复

    问题:如题. 解决方法:右键数据库   属性——选项——恢复模式:简单

  6. 微信JSAPI分享朋友圈调试经验:invalid signature签名错误排查

    .invalid signature签名错误.建议按如下顺序检查: 1.确认签名算法正确,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapi ...

  7. 微信小程序API 登录-wx.login(OBJECT) + 获取微信用户唯一标识openid | 小程序

    wx.login(OBJECT) 调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key).用户数据的加解密通讯需要 ...

  8. Multi-Fiber Networks for Video Recognition (MFNet)

    Motivation:减少时空网络的计算量,保持视频分类精度的基础上,使速度尽可能接近对应网络的2D版本. 为此提出 Multi-Fiber 网络,将复杂网络拆分成轻量网络的集成,利用 fibers ...

  9. 3步实现ssh面密码登录

    1.上次本机的公钥和私钥 [root@vicweb ~]#ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in ...

  10. 【Android】Tips for Android developer: “Conversion to Dalvik format failed: Unable to execute dex: null”

    Androiddeveloper, I have met a strange problem when I want use a third party jar, it remained me tha ...