• Python学习 第4天 基本语法-变量、数据类型、运算符、流程控制


    主要是参考http://www.cnblogs.com/yanxy/archive/2010/02/22/ILovePython.html,记录一下自已的心得体会。

    一、变量

    1、动态类型/强类型

    动态类型:有些像js,一个变量可以先赋给数字,再赋给字符串,毫无影响。

    强类型:i = 10; j = 'ss',如果要i+j,会报错,而js是可以这样的

    2、布尔型

    和js有些类似,0、空、空数组这些全算作False

    3、引号

    和js一样,单引号双引号都可以,多了一个三引号,类似C#的@"",这个就方便了。js没有这种,碰到要换行就要不停地"" + "",虽然回车时会自动处理,但还是不够爽

    ===============

    查了一下,js也有一些处理方法:

    var a = "ffffffffffffffffff
    fffffffffffffffffff";
    console.log(a)

    这种只是为了写着方便,前后是连着的,结果是一排f,而且不能再多出空行

    孤陋寡闻了,没想到js也可以。。。用`这个符号就可以,即键盘Esc下面那个键,数字1左边那个,这个就和C#的@""一样了,是正儿八经的换行。

    4、unicode:如果设置为UTF-8,则可以加u,如果本身就是ANSI,那这样写就会出错

    VS下,设成UTF-8才能运行

    用Notepad++打开,也是设成UTF-8才可以,用ANSI则直接支持中文,加u反而要报错

    5、数组:支持类型混用,试了js也可以,数组长度可变

    arr = ['a', 2, 3]

    数组和字符串均可用这种【切片】方式,有些像SubString或substr之类

    6、元组

    使用()定义,其它差不多(据说速度更快),就是只有一个元素时也要后面跟上逗号,如test = [0,]

    7、集合

    常见集合的语法为:s = set(['a', 'b', 'c'])。不过set在Python 3.0中发生了较大的变化,创建一个集合的语法变成了:s = {1,2,3},用花括弧的方法,与后边要提到的dict类似。
    
    如果在set中传入重复元素,集合会自动将其合并。这个特性非常有用,比如去除列表里大量的重复元素,用set解决效率很高

    8、字典,就是键值对的哈希表了

    最后就不总结了,照搬别人的吧

    (1) Python是一种动态的强类型语言,在使用变量之前无须定义其类型,但是必须声明和初始化;
    (2) “一切命名是引用”,Python中变量名是对象的引用,同一变量名可以在程序运行的不同阶段代表不同类型的数据;
    (3) “一切数据是对象”,Python的所有数据类型都是对象,(相较C#)具有一致的使用方法;
    (4) “把问题想得更简单一点”,Python的数值类型可以说只有两种:整形和浮点,忘掉C#里的各种数值类型吧;
    (5) 注意区别str和unicode,Python的字符串类型有时候会让人发晕,请试着习惯它,另外不要忘了“切片”这个好工具。
    (6) 多使用list, tuple, set 和 dict这几种“很Python”的数据类型,它们分别用[]、()、([])和{}定义。

    二、运算符

    1、**表示次方

    /好像在2.X和3.X不一样,2.X是得到3,3.X是3.33,使用//才是得到3

    整型除法返回浮点数,要得到整型结果,请使用//

     2、自增

    不支持i++这种了,只能 i = i + 1;

    3、逻辑运算符

    Python用关键字and、or、not代替了C#语言中的逻辑运算符&&、||和!

    4、三目运算符

    不是使用 ? : 这种形式了,而是 print 1 if(True) else 0 ,即:

    条件为真 ? 条件为真时代码 : 条件为假时代码

    条件为真时代码 if (条件为真) else 条件为假时代码

    三、流程控制

    1、if else

    if后面要跟冒号,如果if后什么都不做,要写pass

    if True:
        pass

    else if要写成elif,Oracle是elsif,其它是else if,为什么都要改这些约定俗成的东西。。。

    2、switch

    Python没有switch,可以用if else实现,也可以用dict实现,dict实现方法感觉不直观,以后再说吧

     3、while、for

    没有do while和foreach,有个range可以简化for

    for i in range(10):
        print i

    break和continue差不多,Python循环多了个else功能

    Python中的循环还支持else语句,它只在循环正常完成后运行(for和while循环),或者在循环条件不成立时立即运行(仅while循环),或者迭代序列为空时立即执行(仅for循环)。如果循环使用break语句退出的话,else语句将被忽略。

    4、异常

    try catch finally在python是try except finally

    try还支持else

    Python的try也支持else语句。如果有一些代码要在try没有发生异常的情况下才执行,就可以把它放到else中

    5、列表内涵

    6、动态表达式:eval(),exec,execfile()

    js有用过eval,很有用,SQL也有拼字符串,C#没有这种动态语句,或者要很复杂才能实现(网上有搜了下方法,没具体试过)

    eval()函数与exec()函数的区别:
    
    eval()函数只能计算单个表达式的值,而exec()函数可以动态运行代码段。
    eval()函数可以有返回值,而exec()函数返回值永远为None。

    即eval("a=1")是不行的,只能a = eval("1")

    exec("a=1")是可以,但a = exec("1")不行

  • 相关阅读:
    字符,字符串,字节
    111
    串口通信
    字符编码
    枚举和结构体
    参数数组
    .Net垃圾回收机制
    try{ } catch{ } finally{ }
    LVS 工作原理图文讲解
    自动化运维工具—Ansible常用模块二
  • 原文地址:https://www.cnblogs.com/liuyouying/p/6414742.html
Copyright © 2020-2023  润新知