作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了。不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的。

零.先抄书:

1.Python是解释型语言:

计算机是不能够识别高级语言的,所以当我们运行一个高级语言程序的时候,就需要一个“翻译机”来从事把高级语言转变成计算机能读懂的机器语言的过程。这个过程分成两类,第一种是编译,第二种是解释。

编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转变成机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。

解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行作出解释,然后直接运行,最典型的例子是Ruby。

通过以上的例子,我们可以来总结一下解释型语言和编译型语言的优缺点,因为编译型语言在程序运行之前就已经对程序做出了“翻译”,所以在运行时就少掉了“翻译”的过程,所以效率比较高。但是我们也不能一概而论,一些解释型语言也可以通过解释器的优化来在对程序做出翻译时对整个程序做出优化,从而在效率上超过编译型语言。

此外,随着Java等基于虚拟机的语言的兴起,我们又不能把语言纯粹地分成解释型和编译型这两种。

用Java来举例,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件。所以我们说Java是一种先编译后解释的语言。

再换成C#,C#首先是通过编译器将C#文件编译成IL文件,然后在通过CLR将IL文件编译成机器文件。所以我们说C#是一门纯编译语言,但是C#是一门需要二次编译的语言。同理也可等效运用到基于.NET平台上的其他语言。

2.与大多数语言不同,python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {} 。

缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。这也就是游标卡尺的梗的来源。

一.第一个Python程序:

先输出Hello World,然后调用排序函数对一个list进行冒泡的升序排序,尽管程序结构简单,但是包含了大多数的基础语法

## coding=utf-8

##冒泡排序与HelloWorld

list = [8,1,2,66,5,123]defBubbleSort():for i inrange(len(list)):for j inrange(i):if list[j] > list[j+1]:

list[j],list[j+1] = list[j+1],list[j]returnlistif __name__ == "__main__":print("hello world")

list=BubbleSort()print(list)

程序的运行结果如下:

hello world

[1, 2, 5, 8, 66, 123]

为了方便对比,我们再使用C#的代码实现同样的功能:

classProgram

{static void Main(string[] args)

{

Console.WriteLine("Hello World");

BubbleSort();

}private static voidBubbleSort()

{int[] data = { 8, 1, 2, 66, 5, 123};for (int i = 0; i < data.Length - 1; i++)

{for (int j = data.Length - 1; j > i; j--)

{if (data[j] > data[j - 1])

{

data[j]= data[j] + data[j - 1];

data[j- 1] = data[j] - data[j - 1];

data[j]= data[j] - data[j - 1];

}

}

}foreach (int i indata)

{

Console.Write(i+ ",");

}

Console.ReadLine();

}

二.Python程序的程序结构

从上面我们可以大概看出,一个完整的py程序结构大概如下:

我们知道,对于C/C++/C#等编程语言来说,程序的入口一定是main()函数,但是如果沿用这种思路来理解python的话就很容易踩坑。

Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,都可以可以认为是Python的main函数。每个文件(模块)都可以任意写一些没有缩进的代码,并且在载入时自动执行,为了区分主执行文件还是被调用的文件,Python引入了一个变量__name__,当文件是被调用时,__name__的值为模块名,当文件被执行时,__name__为'__main__'。因此,在之前的代码中,我们基本上可以使用这种方式来设置main函数的调用。

三.常量与变量

1 常量:

py并没有提供const关键字来定义变量,哭……

2 变量:

python的变量定义不需要声明类型,直接name=value 就可以了,比如:

a=1 ##整型变量ab=0.02 ##浮点型变量bstr= "Hello World" ##字符串cd=true ##布尔值d

py个人理解应该是故意在弱化变量的概念,当使用C#的思想去理解就出现了很大的偏差。

C/C++中的变量的概念是面向内存的,所以你要声明一个变量,表明空间大小,存储的格式(整数,浮点),以及一个永久不变的名字指向这个变量。而python只有name和object,比如a=1的语句,实际上做了三件微小的工作:

创建name a

创建object 1

将name a 关联到1这个object

然后,就能够直接使用a来调用1这个对象。至于强弱类型什么的,别纠结了吧……

py提供了type()函数来判断变量的类型,如:

a, b, c, d = 20, 5.5, True, 4+3j

print(type(a), type(b), type(c), type(d))

执行结果如下:

3 数值类型:

python支持int(整型),longint(长整型),float(浮点)和complex(负数)四种类型的数值。

//碎碎念一句浮点只有float精度真的够用么……

举例:

a=10 ##int

b=51924361L ##长整型,用大写L结尾

c=15.20 ## 浮点

d=1+2j ##复数,用a+bj或complex(a,b)表示

4 字符串:

str = "Hello World" ##定义字符串

str1 = str[0:4] ##截取字符串,从上标到下标,注意下标从0开始

转义符:

格式化输出:py的格式化输出用法与C语言的printf函数一样:

四.列表与字典:

1.列表:

与声明其他变量一样,python在定义列表时不需要

List list = new List();

直接赋值即可:

list1 = ['physics', 'chemistry', 1997, 2000]

list2= [1, 2, 3, 4, 5]

list3= ["a", "b", "c", "d"]

与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。

常见的列表操作函数如下:

2.元组:元组类似于静态列表,其中的元素不能修改。

3.字典:字典是键值对的集合,声明字典时一样不需要定义字典类型,也不需要new操作:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

PS:1.字典的键不能重复,同时键是不会发生变化的。

2.python中向字典中增加值无需使用add方法,直接操作其键值即可:

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}

dict['Age'] = 8; #更新值

dict['School'] = "DPS School"; #添加一个键值对

常见的字典函数如下:

python编程语法-Python学习笔记(Ⅰ)——Python程序结构与基础语法相关推荐

  1. Python学习笔记(Ⅰ)——Python程序结构与基础语法

    作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...

  2. python编程计算器_Python学习笔记:用Python开发一个计算器项目

    最近抽空看了下python的学习文档,发现开发工具以及资料支持对开发者相当的友好,相比之下,以前用TCL&Tk做的项目主要缺点有两个:1,开发难度大,调试手段只有靠print一种,而且语法错误 ...

  3. 学会python编程容易吗-学习武汉Python编程培训容易吗?别人都是怎么学习的?

    作为人工智能时代的首选语言,Python有着无可比拟的优势,吸引了越来越多的人前来学习.那么,学习武汉Python编程培训容易吗?那些顺利高薪就业的人都是怎么学习武汉Python编程培训的呢?下面,千 ...

  4. python编程入门到实践笔记-python基础(《Python编程:从入门到实践》读书笔记)...

    注: 本文的大部分代码示例来自书籍<Python编程:从入门到实践>. 一.变量: 命名: (1)变量名只能包含字母.数字和下划线.变量名可以字母或下划线打头,但不能以数字打头 (2)变量 ...

  5. python stm32 usb bulk_STM32-USB学习笔记(一) USB基础

    USB基础知识扫盲 前言 本文将从USB的插入检测.身份识别.数据传输三个方面对USB通讯整个过程扫盲,其中有些知识点的详细信息会放在文章最下面的附录中供查看,从而保证文章的整体简洁.在进入主题之前, ...

  6. Vue 学习笔记(1) Vue 基础语法 + Axios 基本使用

    Vue Vue 简介 下载 Vue {{}}:插值表达式 v-text:显示文本 v-html:显示解析html标签的文本 v-on:事件绑定 v-show:控制页面元素隐藏与显示(display控制 ...

  7. C语言学习笔记01:C语言基础语法_变量类型_类型转换

    文章目录 C语言第一天课程笔记 1. 内容安排 2. 课堂笔记 2.1 计算机硬件 2.2 计算机软件 2.3 编程语言和编译器 2.4 编程语言发展 2.5 C语言标准 2.6 C语言学习理由 2. ...

  8. python编程入门经典百度云-python电子书学习资料打包分享百度云资源下载

    [300dpi高清版] Python基砒教程(第2版)LHD,pdf Head. First. Python中文版pdf [ Python3程序开发指南第二版pdf [ thon编程第4版)]( Pr ...

  9. [转]《Python编程金典》读书笔记

    <Python编程金典>读书笔记 原文: http://man.chinaunix.net/develop/python/python_howto/python_howto_program ...

最新文章

  1. R语言使用car包的influencePlot函数将回归分析中的离群点(outlier)、杠杆(leverage)和影响(influence)的信息组合成一个高度信息量丰富的合成图
  2. 学python多长时间能够精通-Python培训需要多长时间可以学会?
  3. 存储空间_Tan分享 存储空间清理
  4. 【Python刷题】_2
  5. 数字图像处理:第十章 离散图象变换
  6. python修改父类属性_Python super和设置父类属性
  7. UOJ #395 BZOJ 5417 Luogu P4770 [NOI2018]你的名字 (后缀自动机、线段树合并)
  8. 对php专业的认识,对PHP要有个全面的认识
  9. drop 很慢 物化视图_终于解决了物化视图复制的问题
  10. 【MFC】vs2013_MFC使用文件之15.mfc 按钮CBitmapButton的使用
  11. Android官方开发文档Training系列课程中文版:与其它APP交互之允许其它APP启动你的Activity
  12. 甲骨文中国疯狂裁员 招聘网站上线“甲骨文人才专场”
  13. Linux操作系统PS命令详细解析
  14. 用python写MapReduce函数——以WordCount为例
  15. 【OpenCV学习】物体跟踪的粒子滤波算法
  16. 如何用金山打字通等软件练习准确地打JAVA语言
  17. lua在线手册 lua在线lua学习教程 lua参考手册中文翻译
  18. CSS浮动定位与背景样式
  19. 图片批量下载 +图片马赛克:多张图片组成端午安康!
  20. 【服务器开发必备知识总结】:BMC开发、raid卡、HBA卡、HDD硬盘、SSD硬盘、ME、cpld、服务器路数、U数介绍、intel cpu 平台架构介绍

热门文章

  1. 联邦学习的一些使用库
  2. sklearn的train_test_split,果然很好用啊!
  3. 悟空分词的搜索和排序源码分析之——搜索
  4. nginx 只写了listen80 没有 listen443 用https访问
  5. PyCharm没有run选项,只有run nosetests in XXX
  6. Ruby on rails
  7. gulp自动化ES6转ES5
  8. ES6 中 Promise 详解
  9. 百度前端技术学院Task20 笔记
  10. 移动Web怎么做屏幕适配