爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 15099|回复: 2

[混合编程] 语言对比:IDL函数不可覆盖参数变量,python函数无妨

[复制链接]

新浪微博达人勋

发表于 2020-12-28 23:11:34 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
IDL的函数和过程中,如果修改了参数变量,那么主程序中的同名变量就会改变:
pro test
x=5
y=6
f,x,y
print,x,y
z=g(x,y)
print,x,y
end


pro f,x,y
x=x+1
y=y+1
end


function g,x,y
x=x*10
y=y*10
return,0
end



结果:
       6       7
      60      70



但是python中没有影响:
def f(x,y):
    x=x*10
    y=y*10
   
x=5
y=6
f(x,y)
print(x,y)

结果:
5 6
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-1-3 11:05:53 | 显示全部楼层
python一般是按值传递,IDL类似fortran,按地址传递,所以修改后原来的东西会修改。按地址传递有个好处就是不用把数组赋值一份,速度快。你用python传一个numpy数组,改数值,也一样会改变的。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-1-3 22:01:19 | 显示全部楼层
ybmy001 发表于 2021-1-3 11:05
python一般是按值传递,IDL类似fortran,按地址传递,所以修改后原来的东西会修改。按地址传递有个好处就是 ...

原来是这样,学到了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表