zoukankan      html  css  js  c++  java
  • C程序员对Python的疑惑

    1.if/else,try,while不产生新的作用域

    与java,c不同的是python只有class和module才会产生新的变量作用域,比如下面的代码会让java,c 程序员很不解

    >>if a is none:

    >>  x=3

    >>print x

    2.为什么python的变量看起来像没有类型限制一样,比如下面的代码

    >>a='string'

    >>a=111

    在python世界里,一切都是对象,连函数也是。所以上面的代码其实a只是一个对象引用,右值才是生成的对象,也就是说a指向了一个新的对象,所以代码不报错。但对象依旧是有类型的,比如

    >>a='string'+111 就不行,因为字符串对象不能喝整数对象相加。

    用c++ 程序的眼光来说,其实可以这么理解

    object *a= new int(111);

    object *a= new string('string');

    可以看成变量a也可以理解成有类型的,只不过类型是通用型

    3.函数参数传递时是传值还是传引用

    如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,

    就不能直接修改原始对象--相当于通过“传值'来传递对象。

  • 相关阅读:
    Codeforces Round #447 Div. 2 A.B.C
    Codeforces Round #445 Div. 2 A ACM ICPC+B Vlad and Cafes
    51Nod 1035 最长的循环节 数论
    Codeforces Round #444 (Div. 2) C.Solution for Cube 模拟
    POJ 3111 K Best
    POJ 2976 Dropping tests
    POJ 3045 Cow Acrobats
    POJ 3045 Cow Acrobats
    POJ 3273
    POJ 3258 River Hopscotch
  • 原文地址:https://www.cnblogs.com/encode/p/5041133.html
Copyright © 2011-2022 走看看