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

第一篇:Python入门

一、编程与编程语言编程的目的:计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别表达方式传递给计算机,从而达到让计算机能够像人脑

一、编程与编程语言

  • 编程的目的:
计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别表达方式传递给计算机,从而达到让计算机能够像人脑/电脑一样自动执行的效果
  • 什么使编程语言?
上面提及的能够被计算机所能表达方式即变成语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。在编程的世界里,计算机更像是人的奴隶,人力编程的目的就是命令奴隶去工作。
  • 什么是编程?
编程即程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。
强调:程序员在未运行前跟普通文件无异,只有程序在运行时,文件所写的字符才有特定的语法意义

二、编程语言分类

机器语言:站在计算机(奴隶)的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件;
汇编语言:站在计算机(奴隶)的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作硬件;
高级语言:站在(奴隶主)的角度,说人话,即用人类的字符去编写程序,屏蔽了硬件操作。
  • 高级语言更贴近人类语言,因而造成了:它必须被翻译成计算机能读懂二进制后,才能被执行,按照翻译方式分为:

  编译型语言:

使用专门的编译器,针对特定的平台,将高级语言码代码一次型的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。
    特点:
         在编译型语言写的程序执行之前,需要一个专门的编译过程,把源代码编译成机器语言的文件,如exe格式的文件,以后要再运行时,直接使用编译结果即可,如直接运行exe文件。因为只需编译一次,以后运行时不需要编译,所以编译型语言执行效率高。
    总结:
    1)一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高;
    2)与特定平台相关,一般无法移植到其他平台;
    2)现有的C、C++、Objective等都属于编译型语言。

  解释型语言: 

使用专门的解释器对源程序逐行解释成特定平台的机器码并立即执行。
    特点:
        解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序。
    总结:
    1)解释型语言每次运行都需要将源代码解释成机器码并执行,效率较低;
    2)只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植;
    3)Python、Ruby等属于解释型语言。
  • 总结

  机器语言:

优点是最底层,执行速度最快
缺点是最复杂,开发效率最低

  汇编语言:

优点是比较底层,执行速度最快
缺点是复杂,开发效率最低

  高级语言:

编译型语言执行速度快,不依赖语言环境运行,跨平台差
解释型跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行

PS:速度不是关键(瓶颈理论),开发效率高才是王道

三、Python介绍

Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年圣诞节期间,Guido开始鞋能够解释Python语言语法的解释器,Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和Shell之间,功能全面,易学易用,可拓展的语言。
Python可以应用于众多领域,如:数据分析、组建集成、网络服务、图像处理、数值计算和科学计算等众多领域。
  • Python(解释器)的发展史
1989年,Guido开始写Python语言的编译器。
1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
Granddaddy of Python web frameworks, Zope 1 was released in 1999
Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.
Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础
Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生
Python 2.5 - September 19, 2006
Python 2.6 - October 1, 2008
Python 2.7 - July 3, 2010
In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
Python 3.0 - December 3, 2008 (这里要解释清楚 为什么08年就出3.0,2010年反而又推出了2.7?是因为3.0不向下兼容2.0,导致大家都拒绝升级3.0,无奈官方只能推出2.7过渡版本)
Python 3.1 - June 27, 2009
Python 3.2 - February 20, 2011
Python 3.3 - September 29, 2012
Python 3.4 - March 16, 2014
Python 3.5 - September 13, 2015
Python 3.6 - 2016-12-23 发布python3.6.0版
  • Python有那些种类
我们现在知道了Python是一门解释型语言,代码想运行,必须通过解释器执行,Python的解释器本身也可以看作是个程序(翻译官司是哪国人不重要),这个程序是什么语言开发的呢? 答案是好几种语言? what? 因为Python有好几种解释器,分别基于不同语言开发,每个解释器特点不同,但都能正常运行我们的Python代码,下面分别来看下:
 CPython:CPython是使用最广且被的Python解释器。本教程以CPython为准。
 当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
 IPython
 IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。    CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
 PyPy PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
 绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点。
 Jython
 Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
 IronPython
 IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

四、变量

  • 什么是变量
变量即变化的量,核心“变”与“量”二字,变即变化,量即衡量状态。
  • 为什么要有变量
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要由一种机制能够反映或者说是保存下来程序执行是状态的变化。
  • 变量的定义规范
变量名只能是字母、数字或下环线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
  • 定义方式:
驼峰体
AgeOfOldboy = 20
下划线(推荐使用)
age_of_oldboy = 20
  • 定义变量名不好的方式
1、变量名为中文、拼音
2、变量名过长
3、变量名词不达意
  • 定义变量会有:id、type、value
1、等号比较的是value,
2、is比较的是id

强调:
1、id相同,意味着type和value必定相同
2、value相同type肯定相同,但id可能不同,如下:
>>> a="help:20"
>>> b="help:20"
>>> id(a)
4330224472
>>> id(b)
4330224528
>>> a == b
True
>>> a is b
False
>>>
  • 变量的赋值
#!/usr/bin/env python
# -*- coding: utf-8 -*
n1 = 123456
n2 = n1


>>> n1 = 123456
>>> n2 = n1
>>> id(n1)
4320493488
>>> id(n2)
4320493488
>>> type(n1)
<class 'int'>
>>> type(n2)
<class 'int'>
  • 赋值方式:  

   链式赋值

x=1
y=x
y=x=a=1
print(id(y),id(c))

  交叉赋值

m=1
n=2
m,n=n,m
print(m,n)
  • 变量的解压
#方法一

>>> num=[1,2,3,4,5]
>>> num1=num[0]
>>> num2=num[1]
>>> num3=num[2]
>>> num4=num[3]
>>> num5=num[4]
>>> print(num1,num2,num3,num4,num5)
1 2 3 4 5

#方法二
#左边的变量名要与列表中的元素一一对应
>>> userid=[11,12,13,14,15]
>>> user1,user2,user3,user4,user5=userid
>>> print(user1,user2,user3,user4,user5)
11 12 13 14 15

 

 

 

 

  • 常量
常量即指不变的量

五、用户与程序交互

  • 在Python3中
input:用户输入任何值,都存成字符串类型
  • 在Python2中
input:必须输入明确的数据类型,输入什么就存成什么类型
raw_input:等于Python3的input
  • 注释
单行注释用#
多行注释用''' '''""" """

六、基本数据类型

  • int整型
用于标识:年龄,等级身份证号,QQ号,个数
 在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
 在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~
  • float浮点数
用于标识:工资,身高,体重
  • long(长整型) 了解即可
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
注意:在Python3里不再有long类型了,全都是int
  • complex复数型(了解即可)
  • 字符串
在Python中,加了引号的字符就是字符串类型,Python并没有字符类型
定义:name='user'  #name=str('user')

 

 

  • 运算符

  算术运算

  以下假设变量:a=10 , b =20

运算符

描述

实例

+

加——两个对象相加

a+b 输出结果30

-

减——得到负数或是一个数减去另一个数

a-b 输出结果-10

*

乘——两个数相乘或是返回一个被重复若干次的字符串

a*b 输出结果200

/

除——x除以y

b/a 输出结果2

%

取模——返回除法的余数

b % a 输出结果0

**

幂——返回x的y次幂

a**b 为10 的20次方,输出结果100000000000000000000

//

取整除——返回商的整数部分

9/2 输出结果4, 9.0//2.0输出结果4.0

   比较运算

  以下假设变量:a = 10, b=20

运算符

描述

实例

==

等于——比较对象是否相等

(a == b)返回False

!=

不等于——比较两个对象是否不相等

(a != b)返回true

<>

不等于——比较两个对象是否不相等

(a <> b)返回true。这个运算符类似!=。

>

大于——返回x是否大于y

(a > b) 返回False

<

小于——返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。

(a

>=

大于等于——返回x是否大于等于y。

(a >= b)返回False

<=

小于等于——返回x是否小于等于y。

(a <= b)返回true

 

    赋值运算

    以下假设变量: a = 10,b=20

运算符

描述

实例

=

简单的赋值运算符

c = a +b 将a +b 的运算结果赋值为c

+=

加法赋值运算符

c += a 等效于c = c-a

-=

减法赋值运算符

c -= a 等效于c = c-a

*=

乘法赋值运算符

c *= a 等效于c = c*a

/=

取模赋值运算符

c /=a 等效于c = c/a

%=

幂赋值运算符

c %= a 等效于c = c %a

**=

幂赋值运算符

c**=a 等效于c = c**a

//=

取整除赋值运算符

c //= a等效于c = c // a

  逻辑运算符

运算符

描述

and

布尔“与”——如果x为False,x and y 返回False,否则它返回y的计算值。

or

布尔“或”——如果x是True,它返回True,否则它返回y的计算值。

not

布尔“非”——如果x为True,返回False。如果x为False,它返回True。

  •  格式化输出(占位符)
%s  =  string   字符串
%d = digit    整型
%f = float    小数
  •  循环终止语句
break用于完全结束一个循环,跳出循环体执行后面的语句
#实现用户名和密码,当用户名为seven或alex且密码为123时,显示登录成功,否则登录失败,失败时允许重复输入三次

count = 0
while count <3:
inp_username=input("Please enter your login username:")
inp_password=input("Please enter your login password:")
if inp_username == "seven" or inp_username == "alex" and inp_password == "123":
print("Login success!")
break
else:
print("Login failure!")
count +=1
continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环
使用while循环实现输出1,23457891112

count = 1
while count <13:
    if count == 6 or count == 10:
        count +=1
        continue
    else:
        print(count)
    count +=1
  • 条件分支
单分支:
if 条件:
    条件为真(True)执行的操作
else:
    条件为假(False)执行的操作


多分枝:
if 条件:
    满足条件执行代码
elif 条件:
    上面的条件不满足就走这个
elif 条件:
    上面的条件不满足就走这个
elif 条件:
    上面的条件不满足就走这个
else 条件:
    上面所有的条件不满足就走这段

  示例:

score = int(input(">>:"))

if score > 100:
   print("成绩最高分数为100分")
elif score >= 90:
   print("A")
elif score >= 80:
   print("B")
elif score >= 70:
   print("C")
elif score >= 60:
   print("D")
elif score >= 0:
   print("E")
else:
   print("成绩不能是负数")
  •  while循环

  Python的while循环语法一:
  while 条件:
    条件为真(True)执行的操作

  示例:

#写个让程序从0打印到100的程序,每循环一次,+1+

count = 0
while count <= 100:
   #只要count<=100就不断执行下面的代码
   print("loop" ,count)
   count += 1
   #每次执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0

   Python的while循环语法二:
  while 条件:
    条件为真(True)执行的操作

  else:

    上面条件不满足就走这段

  示例:

count=1
while count <6:
    if count == 4:
        break
    print(count)
    count+=1
    # break
else:
    print('else的代码块只有在while循环没有被break打断的情况下才执行(最后执行)')
  •  for循环
#for 只有字符串,列表,字典
>>> for item in range(10): 
...     print(item)
... 
0
1
2
3
4
5
6
7
8
9

 

  


推荐阅读
  • 如何精通编程语言:全面指南与实用技巧
    如何精通编程语言:全面指南与实用技巧 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • Java中不同类型的常量池(字符串常量池、Class常量池和运行时常量池)的对比与关联分析
    在研究Java虚拟机的过程中,笔者发现存在多种类型的常量池,包括字符串常量池、Class常量池和运行时常量池。通过查阅CSDN、博客园等相关资料,对这些常量池的特性、用途及其相互关系进行了详细探讨。本文将深入分析这三种常量池的差异与联系,帮助读者更好地理解Java虚拟机的内部机制。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 本文探讨了利用Python实现高效语音识别技术的方法。通过使用先进的语音处理库和算法,本文详细介绍了如何构建一个准确且高效的语音识别系统。提供的代码示例和实验结果展示了该方法在实际应用中的优越性能。相关文件可从以下链接下载:链接:https://pan.baidu.com/s/1RWNVHuXMQleOrEi5vig_bQ,提取码:p57s。 ... [详细]
  • 利用Python与Android进行高效移动应用开发
    通过结合Python和Android,可以实现高效的移动应用开发。首先,需要安装Scripting Layer for Android (SL4A),这是一个开源项目,旨在为Android系统提供脚本语言支持。SL4A不仅简化了开发流程,还允许开发者使用Python等高级语言编写脚本,从而提高开发效率和代码可维护性。此外,SL4A还支持多种其他脚本语言,进一步扩展了其应用范围。通过这种方式,开发者可以快速构建功能丰富的移动应用,同时保持较高的灵活性和可扩展性。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
  • 我正在使用 Ruby on Rails 构建个人网站。总体而言,RoR 是一个非常出色的工具,它提供了丰富的功能和灵活性,使得创建自定义页面变得既高效又便捷。通过利用其强大的框架和模块化设计,我可以轻松实现复杂的功能,同时保持代码的整洁和可维护性。此外,Rails 的社区支持也非常强大,为开发过程中遇到的问题提供了丰富的资源和解决方案。 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
author-avatar
wy6968308431
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有