热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

简明python教程Python简明教程

Python一小时快速入门1.Python简介pylogo.pngPython是一种相当高级的解释性程序设计语言,完成同一个任务C语言可能需要几千行代码Java

Python一小时快速入门

1.Python简介

4369488dd9d7

pylogo.png

Python是一种相当高级的解释性程序设计语言,完成同一个任务C语言可能需要几千行代码

Java要写100行,Python可能只需要20行。

用Python可以做什么?可以做日常任务,比如自动备份你的MP3;可以做网站,很多著名的网站包括YouTube就是Python写的;可以做网络游戏的后台,很多在线游戏的后台都是Python开发的。总之就是能干很多很多事啦。

Python当然也有不能干的事情,比如写操作系统,这个只能用C语言写;写手机应用,只能用Swift/Objective-C(针对iPhone)和Java(针对Android);写3D游戏,最好用C或C++。

但是,对于初学者和完成普通任务,Python语言是非常简单易用的。

python提供了完善的内置库,覆盖了网络、文件、GUI、数据库、文本等大量内容,用python开发,很多功能不必从零编写,直接使用现成的即可。

除了内置库外,Python还有大量第三方库,也就是别人开发的,可以直接使用的。当然如果你的代码封装的很好,也可以作为第三方库给别人使用。

python适合开发网络应用、日常小工具、科学计算等活动。

2.安装Python

Python有两个版本,2.x和3.x互不兼容,按需求安装即可。

安装教程参考我的Ananconda简单入门。

python解释器:我们写的代码会在解释器上运行,类似JVM的机制,我们安装的标准解释器是用C编写的,称为CPython解释器,另外有IPython 是基于CPython交互解释器。还有Java写的Jpython解释器等等。我们一般使用Cpython。

3.python环境基本操作

基本上有两种操作Python的方式,命令行模式和交互模式。

命令行模式就是正常的shell终端操作,输入命令

4369488dd9d7

prompt.png

执行xxx.py

交互模式指每输入一条语句将会得到实时反馈。

在命令行中输入

python

即可看到命令行变成如下样式,行前有>>>提示符。

4369488dd9d7

interactive.png

交互模式下输入语句会得到实时反馈,而不用输入输出函数。

输入exit()退出交互模式。

我们在交互模式下写出第一个程序

print('Hello World')

4369488dd9d7

helloworld.png

下面我们尝试在命令行模式写一个程序。

打开你喜欢的文本编辑器,写下

print('Hello World! ')

保存为hello.py文件

在命令行中切换到文件所在目录,输入

python hello.py

python xxx.py

即可执行文件

4369488dd9d7

excute.png

输入和输出

输出print()是一个python内置函数,可以直接输出括号里的对象。

x=3.14

print(x)

mingzi='Mark'

print(mingzi)

print(300+500)

print('name')

print()也可以打印多个字符串

print(name,age,school)//用逗号隔开

4369488dd9d7

输出.png

输入 input()同样也是python内置函数

x=input('请输入内容:')

括号内可以写提示语,`input()`收到键盘输入后会创建一个对应类型对象。

print(x)

4369488dd9d7

输入.png

输入输出组合起来就可以实现一些小交互操作了

name=input('请输入姓名: ')

print('你的名字是:'+name)

4369488dd9d7

组合.png

小结

在Python交互式模式下,可以直接输入代码,然后执行,并立刻得到结果。

在命令行模式下,可以直接运行.py文件。

4.python基础

语法

python的语法采取缩进语句块,不需要C、java的大括号区分

同一缩进的代码被认为是一个语句块,一般我们约定俗成使用4个空格为一个缩进符,所以我建议大家将TAB设置为4个空格,而不是缩进符

也不需要分号结尾

4369488dd9d7

缩进.png

#`#`号后内容是注释

数据类型

python中所有数据类型都是对象,python创建一个数据类型不需要定义和提前声明,当一个变量赋值后就创建了它。

常用的数据类型

整数

python可以处理任意大小的整数,和matlab有异曲同工之妙,数据类型并没有固定的类型长度。

整数在程序中的写法和数学写法一样

10,-100,214700000000000000等等

浮点数

也就是小数,1.23,3.14等等,浮点数的精度可以规定

字符串

字符串是用单引号' '和双引号" "括起来的任意文本,事实上是字符的序列``list,稍后我们会讲到

既然字符串是序列,那么它当然支持各元素位置的操作。

s='abcd'

len(s)=4

s[0]='a'

s[3]='d'

可以使用序列的偏移量表示序列中的元素的索引。

序列中第一个元素索引为0,以此类推。

序列也能够反向索引从,最后一个开始s[-1],相当于s[len(s)-1],即倒数第几个。

s='abcd'

s[-1]='d'

s[-2]='c'

序列中,我们可以在方括号中使用任何表达式

除了索引,序列还支持分片(slice)

s='abcd'

s[1:3]='bc'

分片中,默认左边界是0,默认右边界是序列长度。

s[:3]='abc'

s[1:]='bcd'

s[:]='abcd'

作为一个序列,字符串也支持拼接

s+'zxyz='abcdxyz'

不可变性

字符串的某个字符不能够被改变,但是可以新建字符串

s='abcd'

s[1]='x'是错误的

可以新建

n=s[1]+'x'

python中,数字、字符串、元组都是不可变的。列表、和字典可变。

字符串类型特定方法

find()find方法是字符串特有的字串查找方法

s='china'

s.find('in')=3

将会返回找到的偏移地址。

replace()是替换字符串内字符的方法。

s.replace('in','out')='chouta'

s='china'//s并没有改变。

split()是分离方法

s='aaa,bbb,ccc'

s.split(',')=['aaa','bbb','ccc']

将字符串序列分为了有三个字符串的列表。

还有一些方法,使用dir(数据类型)查看对象的所有属性和方法,使用help(方法)查看某方法功能。帮助内容与官方文档一致,最好查询方法就是使用的时候查看.

name='china'

dir(name)

help(name.split)

4369488dd9d7

help.png

str(数字)可以将数字转换为字符串,int(string)可以将字符串转换为数字等等

列表 list

列表是序列的一种,支持所有字符串的操作,唯一的区别返回的结果仍然是列表。

列表用方括号[]定义

s=['abc',123,3.14]

len(s)=3

我们仍然可以对列表进行索引、切片等:

s[1]=123

s[:-1]=['abc',123]

s+[4,5,6]=['abc',123,3.14,4,5,6]

s=['abc',123,3.14]s仍然没有被改变

列表特定方法

列表没有固定大小,可以根据需要增加和减小

append() 在列表末尾增加对象

pop()丢弃列表内容。

sort()列表排序,默认升序。

reverse()列表反转

s=[123,456,789]

s.append(666)

s=[123,456,789,666]

s.pop(2)

s=[123,456,666]

s.reverse()

s=[666,456,123]

s.sort()

s=[123,456,666]

列表支持嵌套,元素也可以是另一个列表

m=[[1,2,3],[4,5,6],[7,8,9]]是一个3x3矩阵

m[1]=[4,5,6]

列表解析

除了列表的方法,列表还提供了一个高级操作列表解析

使用列表解析可以简单的操作矩阵

col=[row[1] for row in m]

=[2,5,8]

实际运用可能更复杂

col=[row[1]+1 for row in m if row[1]%2==0]

=[3,9]

列表解析编写在方括号中

可以使用迭代器

G=(sum(row) for row in m)

next(G)=6

next(G)=15

内置函数map(),也会对各项对应位置进行运算

map(sum,m)

=[6,15,24]

map(min,m)

=[1,4,7]

事实上。列表、集合、字典都可以使用解析。

元组 tuple

元组也是序列,但它具有不可变性,一旦初始化就不能修改,语法上它被编写在圆括号中,支持任意类型、任意嵌套和常见的序列操作。

s=(1,2,3,4)

len(t)

=4

元组有特别方法

s.index(4)

=3

即4 出现在偏移量3,4 appears at offset 3

s.count(4)

=1

4只出现一次

元组存在的意义是完整性检查,比如传输数据时保证程序其他部分不会改变数据。

字典 dict

用{}花括号括起来,一个key对应一个value

索引和序列相似,不过不是数字而是key值

D['name']='zhangsan'

事实上我们是在用key哈希映射键搜索值

重访嵌套

D={'name': 'zhangsan','age': '20','job': ['dev','manager']}

D[job]

= ['dev','manager']

D[job][-1]

='manger'

键排序

D={b:'name',c:'job',a:'age',d:'gender;}

我们一般取key并新建列表

ks=list(D.keys())

ks.sort()

for key in keys:

print(key,'=>',D[key])

也可以使用内置函数sorted()

for key in sorted(D)

print(key,'=>'D[key]

集合 set

与字典类似,只有键key,但没有值 value并且不重复

循环

for循环自带迭代器,可以步进循环列表、字符串、对象等

for i in range(2,100,2):

x=sum(i)

print(sum)

如果是字符串s='abcd'

for i in s:

print(i)

列表l=['name',2,3,4]

for i in l:

print(i)

画一个杨辉三角

for i in range(1,10):

print('*'*i+" ")

4369488dd9d7

yangtangle.png

while循环

x=4

while (x>4):

x--

print(x)

判断分支

if-else语句

a=100,b=10

if a

print(a)

elif a==b:

print(a,b)

else :

print(b)

break提前退出当前循环

continue跳过本次循环

函数

python中的函数非常简单

def Fun_Name (para1,para2)

if xxx

return xxx

else

xxx

return xxx

返回可以时任何对象,因为python中所有东西都是对象,可以直接赋值给某对象。

x=Fun_name(para1,para2)

然后使用x

空函数不做任何事情

def name()

pass

语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。

返回多个值当然是可以的,比如游戏里要返回一个三维坐标

import math

def move(x,y,z,step,angle)

nx=x+step*math.cos(angle)

ny=y+step*math.sin(angle)

nz=z+step*math.tan(angle)

return nx,ny,nz

其中import math表示导入math包,使用封装好的函数

得到坐标我们就可以赋值了

x,y,z=move(100,100,0,60,math.pi/3)

print(x,y,z)

其实完全可以使用一个对象接收

role=move(100,100,0,60,math.pi/3)

print(role)

效果和上面一样

关于参数,正确传参非常重要,pyrhon函数参数有默认参数、可变参数和关键字参数。

默认参数

定义时

def funame (x,y=2)

使用时可以,仅使用一个参数x,参数y将默认为2

funame(x)

如果使用funame(x,y)参数值将为传入值

默认参数降低了使用函数的难度,默认参数必须指向不变对象

可变参数传入参数的个数时可变的,我们首先想到将参数作为一个list传入 如:

def cal(numbers)

x=0

for n in numbers

x+=sum(n)

return (x)

但是要在使用前组装一个list或tulple

我们可以使用可变参数

def cal(*numbers)

x=0

for n in numbers

x+=sum(n)

return (x)

如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:

nums = [1, 2, 3]

calc(nums[0], nums[1], nums[2])

=6

这种写法当然是可行的,问题是太繁琐,所以Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:

nums = [1, 2, 3]

calc(*nums)

=6

关键字参数可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。请看示例:

def person(name, age, **kw):

print('name:', name, 'age:', age, 'other:', kw)

函数person除了必选参数name和age外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数

person('Michael', 30)

=name: Michael age: 30 other: {}

也可以传入任意个数的关键字参数:

person('Bob', 35, city='Beijing')

=name: Bob age: 35 other: {'city': 'Beijing'}

person('Adam', 45, gender='M', job='Engineer')

=name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

关键字参数有什么用?它可以扩展函数的功能。比如,在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。

5.python进阶

模块,我们之前导入过math模块(库)(包)

import math

import xxx后python将会找到包所在地址,并且编译,开销很大,但之后就可以直接使用它的函数,xxx.function()

例如引入

import random

ramdom.choice([1,2,3])

或者起别名

import random as ran

ran.choice([1,2,3])

另一种导入包的方式是 from 从某个模块中导入某个具体对象的复制

from xxx import function()

from random import choice()

choice([1,2,3])

就可以

math时python提供的模块(库)(包,我们可以使用自己写的模块,也可以使用第三方模块

在Python中,安装第三方模块,是通过包管理工具pip完成的。

一般安装某个模块

直接使用pip install packagename

且慢,我们还有更好的办法

我们推荐使用的Anaconda,这是一个基于Python的数据处理和科学计算平台,它已经内置了许多非常有用的第三方库,我们装上Anaconda,就相当于把数十个第三方模块自动安装好了,非常简单易用。

直接在要装某模块的环境下

conda install packagename

即可


推荐阅读
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
author-avatar
Lovepetall
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有