Day 1 Python简单程序
一、高级语言和低级语言
最初的计算机程序都是用0和1的序列表示的,程序员直接使用的是机器指令,无需翻译,从纸带打孔输入即可执行得到结果。后来为了方便记忆,就将用0、1序列表示的机器指令都用符号助记,这些与机器指令一一对应的助记符就成了汇编指令,从而诞生了汇编语言。无论是机器指令还是汇编指令都是面向机器的,统称为低级语言。因为是针对特定机器的机器指令的助记符,所以汇编语言是无法独立于机器(特定的CPU体系结构)的。但汇编语言也是要经过翻译成机器指令才能执行的,所以也有将运行在一种机器上的汇编语言翻译成运行在另一种机器上的机器指令的方法,那就是交叉汇编技术。
高级语言是从人类的逻辑思维角度出发的计算机语言,抽象程度大大提高,需要经过编译成特定机器上的目标代码才能执行,一条高级语言的语句往往需要若干条机器指令来完成。高级语言独立于机器的特性是靠编译器为不同机器生成不同的目标代码(或机器指令)来实现的。那具体的说,要将高级语言编译到什么程度呢,这又跟编译的技术有关了,既可以编译成直接可执行的目标代码,也可以编译成一种中间表示,然后拿到不同的机器和系统上去执行,这种情况通常又需要支撑环境,比如解释器或虚拟机的支持,Java程序编译成bytecode,再由不同平台上的虚拟机执行就是很好的例子。所以,说高级语言不依赖于机器,是指在不同的机器或平台上高级语言的程序本身不变,而通过编译器编译得到的目标代码去适应不同的机器。从这个意义上来说,通过交叉汇编,一些汇编程序也可以获得不同机器之间的可移植性,但这种途径获得的移植性远远不如高级语言来的方便和实用性大。
二、编译与解释
编译是将源程序翻译成可执行的目标代码,翻译与执行是分开的;而解释是对源程序的翻译与执行一次性完成,不生成可存储的目标代码。这只是表象,二者背后的最大区别是:对解释执行而言,程序运行时的控制权在解释器而不在用户程序;对编译执行而言,运行时的控制权在用户程序。
解释具有良好的动态特性和可移植性,比如在解释执行时可以动态改变变量的类型、对程序进行修改以及在程序中插入良好的调试诊断信息等,而将解释器移植到不同的系统上,则程序不用改动就可以在移植了解释器的系统上运行。同时解释器也有很大的缺点,比如执行效率低,占用空间大,因为不仅要给用户程序分配空间,解释器本身也占用了宝贵的系统资源。
  编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;
  而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。
三、程序要素
- 名称
 
名称是编程的重要组成部分,为模块、函数、变量等命名。这些名称都称为标识符。选择标识符的名字通常能描述被命名的东西。
Python对标识符构成规则:每个标识符必须以字母或下划线开头,后跟字母、数字或者下划线的任意序列。标识符区分大小写,另外,一些Python本身一部分的标识符(“保留字”或“关键字”)不能作为普通标识符。其关键字如下:
import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del','elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import','in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
- 表达式
 
产生或计算新数据值的程序代码片段称为表达式。关于此部分后续详解。
四、输出语句
Python的内置函数print()是其输出语句,它具有两种形式:
第一种形式:print(<expr>, <expr>, <expr>, ... ,<expr>)
第一种形式包含函数命print,后面带上带括号的表达式序列,用逗号分隔。<>是可填充的“槽”,expr表示一个表达式。
第二种形式:print()
第二种形式它不打印任何表达式。
print(1+2)
print(1, 2, 1 + 2)
print()
print("1 + 2 = ", 1 + 2)
结果为:

值得注意的是,连续的print语句通常显示在屏幕的不同行上,空print()生成空行输出,在背后真正发生的是,在打印所有提供的表达式之后,print函数自动附加某种结束文本。默认情况下,结束文本是表示行结束的特殊标记字符("\n")。可以包含一个附加参数显示地覆盖这个默认值。如下:
print(1 + 2, end=" ")
print(1, 2, 1 + 2, end=" ")
print()
print("1 + 2 = ", 1 + 2, end=" ")
结果为:

五、赋值语句
- 简单赋值
 
基本赋值语句具有以下形式:
<variable> = <expr>
variable表示一个标识符,expr表示一个表达式。赋值意义:右侧的表达式被求值,然后产生的值与左侧命名的变量相关联。变量可以多次赋值,它总是保留最新的值。
- 赋值输入
 
对于文本输入语句形式如下:
<variable> = input(<prompt>)
<prompt>表示一个字符串表达式,用于提示用户输入。
 name = input("Enter your name:")
 print(name)
结果为:

若输入数字,其形式如下:
<variable> = eval(input(<prompt>))
 ans = eval(input("Enter an expression:"))
 print(ans)
结果为:

函数eval()功能很强大,当对用户输入求值时,本质上是允许用户输入一部分程序。但也有潜在的危险,坏人也可利用这种能力输入恶意指令,形成“代码注入”攻击,后续中会给出安全的替代方法。
- 同时赋值
 
同时赋值是允许同时计算多个值。形式如下:
<var1>, <var2>, ... ,<varn> = <expr1>, <expr2>, ... ,<exprn>
sum, diff = x + y, x - y
sum、diff分别是x、y的和、差。
若交换两个值,可以写成:
x, y = y, x
Day 1 Python简单程序的更多相关文章
- Python简单程序爬取天气信息,定时发邮件给朋友【高薪必学】
		
前段时间看到了这个博客.https://blog.csdn.net/weixin_45081575/article/details/102886718.他用了request模块,这不巧了么,正好我刚用 ...
 - [DEBUG] java中用Runtime调用python 简单程序输出null
		
今天需要在java中调用python脚本,首先考虑的是java自带的Runtime 在ubuntu和win10下分别测试,发现win10报错 java源代码 @Test public void tes ...
 - 一个简单的python爬虫程序
		
python|网络爬虫 概述 这是一个简单的python爬虫程序,仅用作技术学习与交流,主要是通过一个简单的实际案例来对网络爬虫有个基础的认识. 什么是网络爬虫 简单的讲,网络爬虫就是模拟人访问web ...
 - python简单的监控脚本-利用socket、psutil阻止远程主机运行特定程序
		
python简单的监控脚本-利用socket.psutil阻止远程主机运行特定程序 psutil是一个跨平台的库(http://code.google.com/p/psutil/),能够轻松的实现获取 ...
 - Python简单爬虫入门二
		
接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...
 - 亲身试用python简单小爬虫
		
前几天基友分享了一个贴吧网页,有很多漂亮的图片,想到前段时间学习的python简单爬虫,刚好可以实践一下. 以下是网上很容易搜到的一种方法: #coding=utf-8 import urllib i ...
 - GJM : Python简单爬虫入门(二) [转载]
		
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
 - Selenium + PhantomJS + python 简单实现爬虫的功能
		
Selenium 一.简介 selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样 selenium2支持通过驱动真实浏览器(FirfoxDrive ...
 - 【美妙的Python之中的一个】Python简单介绍及环境搭建
		
美妙的Python之Python简单介绍及安装 简而言之: Python 是能你无限惊喜的语言,与众不同. 1.Python: ...
 
随机推荐
- SpringCloud的Bus(一)消息中间件的概念和用途
			
一.概念与定义 1.Message Broker Message Broker是一种消息验证.消息转换.消息路由的架构模式,用于如: 消息路由到一个或多个目的地 消息转化为其他的表现方式 执行消息的聚 ...
 - HTTP协议扫盲(六)InputStream的复用
			
一.问题提出 在进行网关引擎开发时,获取到一个http请求的inputstream后,可能要多次利用它进行read操作.由于流读过一次就不能再读了,所以需要实现InputStream的复制. 而Inp ...
 - Scala入门(1)Linux下Scala(2.12.1)安装
			
Scala入门(1)Linux下Scala(2.12.1)安装 一.文件准备 1.1 文件名称 scala-2.12.1.tgz 1.2 下载地址 http://www.scala-lang.org/ ...
 - POJ-1251 Jungle Roads---MST裸题(需要编号)
			
题目链接: https://vjudge.net/problem/POJ-1251 题目大意: 首先给你一个图,需要你求出最小生成树,输入N个节点,用大写字母表示了节点,然后节点与节点之间有权值. 思 ...
 - [转]使用awk批量杀进程的命令
			
1. ps -ef|grep aaa|grep -v grep 这是大家很熟悉的命令,这里就不再多说,就是从当前系统运行的进程的进程名中包含aaa关键字的进程. 2. 后面部分就是awk命令了,一般a ...
 - [转]python 模块 chardet下载及介绍
			
来源:http://blog.csdn.net/tianzhu123/article/details/8187470/ 在处理字符串时,常常会遇到不知道字符串是何种编码,如果不知道字符串的编码就不 ...
 - Java高级篇(三)——JDBC数据库编程
			
JDBC是连接数据库和Java程序的桥梁,通过JDBC API可以方便地实现对各种主流数据库的操作.本篇将介绍一下如何使用JDBC操作数据库(以MySQL为例). 一.JDBC JDBC制定了统一访问 ...
 - RPC服务和HTTP服务
			
很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单 ...
 - How to preview html file in our browser at sublime text?
			
sublime preview html.md open In Browser what should we do if we want to preview html file in our bro ...
 - JavaScript之Promise对象
			
含义 Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大.它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了 Promise 对象. ...