python语言在哪些控制结构中使用else_使用的各种语言总结

Published: 2016-11-10 22:40:00

计算机语言学习和使用

语言本身就是一种工具,一些语言提供了其他语言所没有提出的功能

选择有价值的语言,了解它们之间的区别,分别适合什么任务,以及它们的弱点是什么,能做什么?适合什么任务?是否可用?掌握程度?

为你给定的任务选择最佳的语言

<1>工具相对而言是基础,使用工具的技能才是创造精美物品的关键

工具不是替我们做我们该做的工作,而是使我们有能力做我们的工作

<2>明白不同的情况需要不同的解决方案,并将正确的工具用到正确的工作上

用实际的眼光来看待软件工具。切合实际的向工具投入时间和金钱,磨练你的工具。

<3>时刻准备试用新的工具,确保你所使用的工具是你所获得最适合的。

<4>了解工具嫩做什么,适合什么任务以及学习如何驾驭它

<5>拥有工具的源代码是非常有用的

计算机语言学习

编程语言的架构有三个特点,

一是基本的元素,

二是构成复杂内容的组合方式,

三是抽象能力以及一些机制。

关键字的掌握和区分以及联系,可以为在不同语言中切换带来一个很好的切入口。

除了关键字还有一些方法和重要的类型。在这里也作为关键字学习了。

基本的元素: 语言的类型系统

语言的一致性

组合的手段: JAVA组合 和继承

抽象的机制:

汇编 是对底层机器的轻微抽象

命令式语言 基于计算机的结构,对汇编的抽象,通过以函数为单元

面向对象 基于对象

函数式 基于函数和模块

一些处理问题机制

错误处理方式

垃圾回收机制+异常处理机制

状况机制

语言特性:

C语言

C语言是接触的第一门面向过程的语言,也可以称之为命令式编程语言。

关键字分为:

数据类型: void char int float double short long signed unsigned

struct union enum typedef sizeof const

控制结构: if else switch case default

break continue return goto

for do while

其他:auto static registor extern const volatile

JAVA语言

JAVA是面向对象的编程语言,面向对象中还是借鉴了C语言的一些特性

数据结构:基本型和构造型,基本型是 byte boolean void char int float double short long

enum const false true null

控制结构: if else switch case default

break continue return goto

for do while

面向对象特征: abstract extends class interface implements new

final static this super instance of private protected public

try catch throw finally throws

import package assert

其他: synchronized transient

Python语言

Python 是多范式编程,中间还有面向对象特性,函数式编程范式等

数据:False True

控制结构: if else elif

break continue return

for while yield

面向对象: class def

try except raise global assert

函数式: lambda is as and with in form or not

其他 : pass

Scala语言

Scala也是面向对象和面向函数式编程的多范式语言,使用了模式匹配case

数据: var val lazy true false null Unit类

控制结构: if else

return match yield

for do while

面向对象: abstract extends class trait def object

final this super private protected

try catch throw

import package assert

函数式: with forSome type case override sealed implicit

其他:

R语言

R语言也是一门很好的工具

数据结构:numeric logical character complex matrix dataframe factor list table array NA Null NaNTRUE FALSE function

控制结构: if else ifelse

break return case

repeat for in

R语言循环特性不是很好,多习惯用向量化编程。apply之类的才是循环的王道。

面向对象:S3类隐式定义类以及S4类。tryCatch 泛型

其他:

SQL

SQL是工具性语言了

数据类型:integer smallint decimal numberic float double 增加了tinyint ,mediunint ,bigint,BIT类型Mysql支持

database table index view

一些命令

DDL:create drop alter

DML:select insert delete update

DCL: grant revoke

Shell 脚本

数据类型:

控制结构 if else

for

Excel工具

作为数据分析来说,适合的就是好的。Excel的操作是靠人去完成的。这个也是一个很好用的工具

不同的操作系统

编码

window 一般是gbk的编码,读取utf-8的文件时,需要声明读取编码就OK了。 source(file,encoding="utf-8")

linux/win两套环境,编码部分要是区别写的

换行符

换行符是不一样的,

MSExcel2007中采用的是 /n 转义字符

记事本只支持 /r/n

不同语言的路径

路径表示方式

斜杠 /

反斜杠 \

斜杠

Windows C:\Program Files\Microsoft Office

C language C:\User\Dae

C plus plus C:\User\Dae

Python C:\User\Dae

MATLAB C:\User\Dae

反斜杠系统:

Linux /home/dmstsai

Java D:/Mycoding/Java

MySQL D:/My_IR/train_.csv load data local infile 'D:\\My'

R language C:/Users/Dage/Documents C:\\Users\\age\\Documents

HTML

XML

\转义

网络文件路径

浏览器 https://www.baidu.com/

编码

C语言

gcc编译的时候 是当作 ansi格式处理,所以会出现乱码

JAVA

对于Java由于默认的编码方式是 UNICODE,所以用中文也易出问题,常见的解决是

String s2 = new String(s1.getBytes(“ISO-8859-1”),”GBK”);

网址路径的编码,

用的是utf-8编码。查询字符串的编码,用的是操作系统的默认编码

R读取,统一用utf-8的。

不同语言安装类库

Java 扩展模块

JDK\jre\lib\ext ,这个文件夹专门放置扩展的jar文件的地方

或者创建Maven工程

Python 安装类库

<1>第三方安装 pip 或者easy_install

<2>setup.py install PIL源码 就可以通过源码方式安装了

R语言

CRAN(Comprehensive R Archive Network)(R综合典藏网)

程序的文件后缀

语言后缀名

C language .c .obj

C ++ .c++

Scala .scala .class

Java .java .class

Python .py

R language .R .Rdata

MATLAB .m .mat

Perl .pl

PHP .php

HTML .html

XML .xml

MySQL .sql

关于Python,py pyw是源文件,pyc pyo是编译的文件 ,

pyd其实是动态链接库本质是windows的dll文件或者unix的so文件 pyw是没有控制台的,也就是默认用pythonw打开的文件

py是默认用python打开的。

pyo是优化的编译文件(虽然目前跟pyc文件基本上没什么区别

程序文件后缀名

安装程序

安装包 软件的所有文件释放到硬盘上,完成修改注册表、修改系统设置、创建快捷方式等工作

可执行程序 卸载程序

打包成双击执行

命令行执行

exe

jar

后缀名 文件类型

.h 头文件

.lib 静态链接库

EXE 可执行程序文件

COM 可执行命令文件

BAT 可执行批处理文件 由DOS或Windows系统内嵌的命令解释器来解释运行。本质,是一堆DOS命令按一定顺序排列而形成的集合。

TXT 文本文件

DAT 数据文件

BAK 备份文件

DLL Dynamic Link Library 通过使用 DLL,程序可以实现模块化,由相对独立的组件组成

以.exe为后缀的文件就是可执行文件,

以.bat为后缀的文件就是可执行批处理文件

动态链接需要发行DLL,但EXE本身比较小,静态链接不需要发行DLL,但本身就比较大了

静态链接产生的执行文件执行是不需要库文件的支持,而动态链接产生的执行文件运行过程中需要库文件支持

静态链接库的使用需要库的开发者提供生成库的.h头文件和.lib文件。要想用就得全要!要不就都别要!:)

linux库文件分为静态库和动态库两种。静态库习惯以.a 结尾,而动态库习惯以.so(shared object)结尾。而且必须以lib开头

不同语言的注释

注释 行注释 块注释

语言 注释符号 注释要求

C language /* 注释 */

C ++ // 行注释

Python #

MATLAB %

Java //

R language #

Perl #

XML

MySQL -- 注释

PHP支持三种注释符号,分别如下:

1.C++风格的单行注释://

2.C风格的多行注释:/*……*/

3.shell风格的注释:#

HTML

1、

2、//注释内容 (在css或javascript中插入单行注释)

3、/*注释内容*/ (在css或javascript中插入多行注释)

MySQL注释符有三种:

1、#注释

2、"-- 注释" (注意--后面有一个空格)

3、/* 注释 */

MATLAB

单行注释 %

块注释符号%{ 和 %}

垃圾回收机制+异常处理机制

异常被认为是一种很优雅的处理错误的机制,

使用try/catch(或类似的关键字)进行捕捉,

然后进行处理或者继续向上抛出异常

C 本身的错误处理风格是 error code

异常机制:即Java或者类似风格的exception handling,使用try/catch(或类似的关键字)进行捕捉,然后进行处理或者继续向上抛出异常;

状况机制:主要指的是Common Lisp风格的做法,即除了抛出异常、捕捉异常以外,还有重启(restart)机制,可以向下移动到某一个指定的代码处理点,例如从错误处继续运行等做法。

希望达到的效果本质上就是避免程序未来会进入acces`1s violation的状态。

想做到这一点,方法也是很简单粗暴的——

只要你在函数里面把运行前该对函数做的检查都查一遍就好了。

这个无论你用exception还是用error code,写起来都是一样的。

区别在于调用你的函数的那个人会怎么样

编程风格

理解自己要使用编程风格和开发方式,了解编程风格是

熟悉自己和其他原子的方式,了解开发方式来进行团队作战的方式

怎么理解所谓的编码风格?

提出的解决方案,以及解决方如何分解,使用目标语言构建

1)结构化编程

一种命令式的编程方法,运用算法分解。以过程为中心,运用自顶向下

的设计技术,考虑完成任务所需的步骤的顺序。

结构化编程技术特征

常用的实现语言:C

2)面向对象的编程

另外的一种命令式的的风格,以数据为中心的模型,考虑数据的生命以及

数据的移动方式。

面向对象的编程的技术特征:抽象、封装、继承、多态

常用的实现语言:Java、C++、Smalltalk python

3)函数式编程

一种声明式的编程风格,基于更加数学化的编程模型。

常见的函数式编程语言:Lisp、Scheme Scala Python

4)逻辑编程

另外一种声明式的编程风格,是想执行器提供一组规则和一个目标陈述

编程语言:Prolog

编程思想

从自己的错误中学习,从别人的错误中学习 产品级的代码 工具型代码

原则:

编程不要相信,用怀疑的眼光审视输入和输出

编码的目标是清晰,在此基础上才可以选择简洁

设置权限,增加预防措施

编译的报错也要开启,兼听则明,虽然这回花费一些时间

使用静态工具检查

使用安全的数据结构

约束

防御性编程有助于程序的安全,防范恶意的滥用和破坏。

进攻性编程

主动尝试打破代码常规<测试时代>

(1)编排代码的格式和板式

使用括号<悬挂式allman K&R式>

(2)代码的命名 和记录

以下划线 以点 以大小写字母 匈牙利命名法

<变量通常是名词或者动词化的名词,变量通常小写字母开头>

<函数在逻辑上是一种行为,多用动词,从使用者的角度命名>

<命名文件>同一类型不要仅仅是大小写的区别,不同类型的文件尽量不要同名

(3)编写注释和处理错误

自文档话的代码

记录创建日期

将旧代码标记为过时

描述每个函数的参数

注释是我们的生命线、记忆钥匙和代码的随篇指导,锦上添花

注释的目标读者是人,而不是机器,注释是主观的东西,编写够用的注释

注释 解释代码的目的、选择实现方式的策略 注释异常、特殊情况

注释的方式 行尾注释 缩进注释 常位于代码的上方

错误从何而来 用户错误 程序员错误 意外情况

错误报告机制 返回值 错误状态变量 异常 终止模式 恢复模式

检测错误 处理错误 <错误来自何处,为什么会,严重性 如何修正>

处理 尽早。尽可能日志报告传播恢复

(4)编码的风格和配合

理解自己要使用编程风格和开发方式

工具

源代码编辑工具

代码构建工具 编译器 链接器

调试和调查工具

语言支持工具

文档工具

测试类型

单元测试 组件测试 集成测试 回归测试 负载测试 压力测试 疲劳测试 可用性测试

调试

编译失败 运行时崩溃 非预期行为

优化

避免优化,从开始的时候就考虑性能

构建安全的代码

编程如战争

阅读代码

目的:

(1)将代码作为参考的文献;

(2)将代码作为范例加以学习;

(3)维护现有的代码;

(4)改进现有的代码;

(5)重用已有的代码;

(6)对代码进行审查。

学习

1. 首先了解该语言的基本数据类型,基本语法和主要语言构造,主要数学运算符和print函数的使用,

2. 其次掌握数组和其他集合类的使用,有基础的话可以理解一下泛型,如果理解不了也问题不大,后面可以补;

3. 简单字符串处理。所谓简单,就是Regex和Parser以下的内容,什么查找替换,截断去字串之类的。不

4. 基本面向对象或者函数式编程的特征,无非是什么继承、多态、Lambda函数之类的

5. 异常、错误处理、断言、日志和调试支持,对单元测试的支持。你不一定要用TDD,但是在这个时候应该掌握在这个语言里做TDD的基本技能;

6. 程序代码和可执行代码的组织机制,运行时模块加载、符号查找机制,这是初学时的一个难点,因为大部分书都不太注意介绍这个极为重要的内容;

7. 基本输入输出和文件处理,输入输出流类的组织,这通常是比较繁琐的一部分,可以提纲挈领学一下,搞清楚概念,用到的时候查就是了。

8. 该语言如何进行callback方法调用,如何支持事件驱动编程模型。在现代编程环境下,这个问题是涉及开发思想的一个核心问题,几乎每种语言在这里都会用足功夫,.NET的delegate,Java的anonymous inner class,Java 7的closure,C++OX的 tr1::function/bind,五花八门。如果能彻底理解这个问题,不但程序就不至于写得太走样,而且对该语言的设计思路也能有比较好的认识;

9. 如果有必要,可在这时研究regex和XML处理问题,如无必要可跳过;

10. 序列化和反序列化,掌握一下缺省的机制就可以了;

11. 如果必要,可了解一下线程、并发和异步调用机制,主要是为了读懂别人的代码,如果自己要写这类代码,必须专门花时间严肃认真系统地学习,严禁半桶水上阵;

12. 动态编程,反射和元数据编程,数据和程序之间的相互转化机制,运行时编译和执行的机制,有抱负的开发者在这块可以多下些功夫,能够使你对语言的认识高出一个层面;

13. 如果有必要,可研究一下该语言对于泛型的支持,不必花太多时间,只要能使用现成的泛型集合和泛型函数就可以了,可在以后闲暇时抽时间系统学习。需要注意的是,泛型技术跟多线程技术一样,用不好就成为万恶之源,必须系统学习,谨慎使用,否则不如不学不用;

14. 如果还有时间,最好咨询一下有经验的人,看看这个语言较常用的特色features是什么,如果之前没学过,应当补一下。比如Ruby的block interator, Java的dynamic proxy,C# 3的LINQ和extension method。没时间的话,我认为也可以边做边学,没有大问题。

15. 有必要的话,在工作的闲暇时间,可以着重考察两个问题,第一,这个语言有哪些惯用法和模式,第二,这个语言的编译/解释执行机制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值