zoukankan      html  css  js  c++  java
  • [python学习笔记]条件,循环和其他语句

           1,隐藏的print,import属性。

          首先我们之前了解过print和import,它依然隐藏着更多的特性。对于Print来说,逗号的作用就很明显,比如print 'age:',42 ,执行后逗号会自动转变为空格使之成为一个连贯的字符串。age: 42.

          另外import,把某一事件作为另一事件导入。从模块导入函数时可以用import somemodule,或者from somemodule import somefunction 等。另外可以在语句末增加一个as子句,在该子句后给出名字,或者为整个字句提出别名。例如import math as foobar .foobar.sqrt(4) 。

           2,赋值魔法

            多个赋值同时进行,比如x,y,z=1,2,3,还可以进行调换x,y=y,x。事实上这里所作的事情就做序列解包,先将多个值的序列解开再放到要赋值的序列中。但必须保证等号两边的数量完全一样否则会发生异常。

           链式赋值,是将同一个值赋给多个变量的捷径,x=y=4.

           增值赋值,类似C中的赋值。

          5.条件和条件语句

             布尔值,在python中 false none 0 "" [] {}都会被看做是假,换句话说,标准值false,none ,所有类型的数字0,空序列,以及空字典都被视为假。其他的一切都被视为真,另外ture和false可以被看做是1和0.比如ture+false+3,执行该语句则结果为4.记住所有的值都可以被看所是布尔值,且不需要进行显示转换,规则就是上面所说的。

          if,else,以及elif

              if  (条件)

                       成立

                else://注意冒号

              多条件时用elif,另外也可以用and 或 or来增加条件。

            比较运算符

            相等运算符 ==

            is 同一运算符,此处注意的是is用来判断两个列表是否有同一性而不是相等性,比如x=y=[1,2,3],z=[1,2,3],此时我们说x,y有同一性而x和z就没有同一性。则x is y返回ture,x is z 返回false。

             另外x is not y是表达相反的意思。

              in 成员资格符,用来判断该成员是否在列表或者字符串或者字典中。

              字符串和序列比较,字符串可以按照字母顺序排列进行比较。 “alpha”<"beta" 返回值为ture

             6.循环,

             while循环,for循环。

            7.迭代工具

               程序可以同时迭代两个序列,比如有两个下面的列表。

                names=['anne','beth','george','damon']

                age=[12,32,33,14]

                如果想打印名字和对应的年龄,则可以向下面这样做。

               for i in range(len(names)):

                    print names[i],'is',age,'years old'

               在这里i是循环索引的标准变量名。

               另外zip函数可以用来进行并行迭代,把两个序列压缩在一起,然后返回一个元组的列表,zip函数作用于任意多的序列,关于它很重要的一点是zip可以应付不等长的序列,等最短的用完的时候就会停止。

              3. 翻转和迭代排序

                sort([2,3,1,6,3,2])运行结果为

                [1,2,2,3,3,6]。同样对于字符串也适用

               reversed().翻转排序

               >>> list(reversed('hello,world'))

               ['d', 'l', 'r', 'o', 'w', ',', 'o', 'l', 'l', 'e', 'h']

              4.跳出循环,break和continue

              5.pass什么什么都不做。继续执行下面的语句。

              6.del 删除。

              7.使用exec和eval执行和求值字符串。有些时候很可能要动态的创造python代码,然后将其作为语句执行或作为表达式计算,注意执行存储在字符串中的python代码,会有很严重的潜在安全漏洞,如果程序将用户提供的一段内容中的一部分字符串作为代码执行,程序可能会失去对代码执行的控制,这种情况在网络应用程序,比如CGI脚本中尤其危险。

                此处exec可用来执行python代码比如exec“print 'hello world!'”则语句print 'hello world'就会被执行。

                使用简单形的exec语句绝不是好事,很多情况下可以给它提供命名空间(放置变量的地方)否则将会破坏原有的python代码比如,      

    >>> from math import sqrt
    >>> exec "sqrt=1"
    >>> sqrt(4)
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: 'int' object is not callable

                因为exec动态的创建pthon使得sqrt原本的功能不可用。所以通过增加in<scope>来实现

              

    >>> from math import sqrt
    >>> sqrt(4)
    2.0
    >>> scope={}
    >>> exec 'sqrt=1'in scope
    >>> sqrt(4)
    2.0
    >>> scope['sqrt']
    1

    可以看到将exec代码放到命名空间scope中,潜在的破坏性就会消失,,因为通过exec赋值的变量只能在它的作用域内有效。可以将scope打印出来。看看其组成,通过测试可知scope是一个字典的形式,默认情况下只有_builtins_一个键,当然本例加了一个sqrt。

           eval函数,同样作为内建函数,exec执行一系列的 python代码,而eval会计算python表达式。并返回结果的值。比如可以用eval创建一个计算器。    

    >>> eval(raw_input("please enter pxpression:"))
    please enter pxpression:1+2+3*23
    72

  • 相关阅读:
    Jquery 添加插件
    后台添加前台标签
    jQuery.validate 中文API
    jquery validate 详解二
    jquery validate 详解一
    System.Collections里的一些接口
    C#中 Reference Equals, == , Equals的区别
    关于iOS原生条形码扫描,你需要注意的两三事
    layoutSubviews何时调用的问题(转)
    layoutSubviews总结
  • 原文地址:https://www.cnblogs.com/qxhcpp/p/2525902.html
Copyright © 2011-2022 走看看