python自定义函数问题

Python/PHP/Perl 开发与设计
回复
haozi3
帖子: 71
注册时间: 2007-12-18 17:05
送出感谢: 0
接收感谢: 0

python自定义函数问题

#1

帖子 haozi3 » 2011-01-27 11:17

代码: 全选

def max(a,b):
    if a>b:a=a
    else:a=b

a=3
b=5
max(a,b)
print a
为什么输出是3,而不是5? 意思就是在max当中的赋值只有在max函数当中才能用?为什么?
而以下这个就可以。

代码: 全选

def max(a,b):
    if a>b:a=a
    else:a=b
    print a
a=3
b=5
max(a,b)
头像
remeber
论坛版主
帖子: 13005
注册时间: 2009-01-06 15:18
来自: 人间
送出感谢: 1 次
接收感谢: 22 次

Re: python自定义函数问题

#2

帖子 remeber » 2011-01-27 11:36

第一个函数定义体内没有print语句...没有返回值..调用结果一直为新附的值
第二为正常调用...
“有一种被人抛诸脑后的过去,包含一些不该遗忘的点点滴滴。欢笑之余,我将故旧拾起,才刹见自己的薄情。人世间似乎存在着某种公平,每个人都曾被抛掷在他人的遗忘中;而今你所有哽咽难宣的话语,也正是你曾为人所期盼,却永远听不见的字句。” —赫曼 赫塞
haozi3
帖子: 71
注册时间: 2007-12-18 17:05
送出感谢: 0
接收感谢: 0

Re: python自定义函数问题

#3

帖子 haozi3 » 2011-01-27 12:55

remeber Jiraiya 写了:第一个函数定义体内没有print语句...没有返回值..调用结果一直为新附的值
第二为正常调用...

代码: 全选

def max(a,b):
    if a>b:a=a
    else:a=b

a=3
b=5
max(a,b)
print a
这个里面a=3,b=5的赋值在max(a,b)之前,我的意思是为什么在max(a,b)之后a的值没有变化?如果我有三个数

代码: 全选

def max(a,b):
    if a>b:a=a
    else:a=b

a=1
b=2
c=3

max(a,b)
max(a,c)
我要怎么打印出最大数呢?如果把print a放在max函数内就会打印出第一次对比和第二次对比的结果,我现在只想在最后打印结果该怎么办呢?
haozi3
帖子: 71
注册时间: 2007-12-18 17:05
送出感谢: 0
接收感谢: 0

Re: python自定义函数问题

#4

帖子 haozi3 » 2011-01-27 12:59

以下这个方法可以,但是我就是在想怎么调用对比大小之后的结果,让对比大小之后的结果返回给max, 类似int max(a,b) 可以吗?

代码: 全选

def max(x,y,z):
    if x>y:x=x
    else:x=y
    if x>z:x=x
    else:x=z
    print x
    
a=int (raw_input('enter '))
b=int (raw_input('enter '))
c=int (raw_input('enter '))

max(a,b,c)
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
送出感谢: 1 次
接收感谢: 89 次
联系:

Re: python自定义函数问题

#5

帖子 cuihao » 2011-01-27 13:14

python的函数都是按值传递的吧,不能修改
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
送出感谢: 1 次
接收感谢: 89 次
联系:

Re: python自定义函数问题

#6

帖子 cuihao » 2011-01-27 13:17

代码: 全选

def max(a, b)
    if a>b:
        return a
    return b
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
头像
remeber
论坛版主
帖子: 13005
注册时间: 2009-01-06 15:18
来自: 人间
送出感谢: 1 次
接收感谢: 22 次

Re: python自定义函数问题

#7

帖子 remeber » 2011-01-27 13:25

haozi3 写了:

代码: 全选

def max(a,b):
    if a>b:a=a
    else:a=b

a=3
b=5
max(a,b)
print a
这个里面a=3,b=5的赋值在max(a,b)之前,我的意思是为什么在max(a,b)之后a的值没有变化?
没错.附值是在函数之前.但函数里头没有返回值..意思是函数没有起到将比较结果返回的作用.再如何调用也是无用.a只会一直是3
haozi3 写了: 如果我有三个数

代码: 全选

def max(a,b):
    if a>b:a=a
    else:a=b

a=1
b=2
c=3

max(a,b)
max(a,c)
我要怎么打印出最大数呢?如果把print a放在max函数内就会打印出第一次对比和第二次对比的结果,我现在只想在最后打印结果该怎么办呢?
把函数体补充完整...max函数是要求有个返回值的..目前这函数中没有相关语句.
“有一种被人抛诸脑后的过去,包含一些不该遗忘的点点滴滴。欢笑之余,我将故旧拾起,才刹见自己的薄情。人世间似乎存在着某种公平,每个人都曾被抛掷在他人的遗忘中;而今你所有哽咽难宣的话语,也正是你曾为人所期盼,却永远听不见的字句。” —赫曼 赫塞
haozi3
帖子: 71
注册时间: 2007-12-18 17:05
送出感谢: 0
接收感谢: 0

Re: python自定义函数问题

#8

帖子 haozi3 » 2011-01-27 13:26

cuihao 写了:python的函数都是按值传递的吧,不能修改
什么意思?能说详细点吗?
haozi3
帖子: 71
注册时间: 2007-12-18 17:05
送出感谢: 0
接收感谢: 0

Re: python自定义函数问题

#9

帖子 haozi3 » 2011-01-27 13:36

这样???

代码: 全选

def max(a,b):
    if a>b:return a
    else:return b

a=3
b=5

max(a,b)
print max(a,b)
remeber Jiraiya 写了:
haozi3 写了:

代码: 全选

def max(a,b):
    if a>b:a=a
    else:a=b

a=3
b=5
max(a,b)
print a
这个里面a=3,b=5的赋值在max(a,b)之前,我的意思是为什么在max(a,b)之后a的值没有变化?
没错.附值是在函数之前.但函数里头没有返回值..意思是函数没有起到将比较结果返回的作用.再如何调用也是无用.a只会一直是3
haozi3 写了: 如果我有三个数

代码: 全选

def max(a,b):
    if a>b:a=a
    else:a=b

a=1
b=2
c=3

max(a,b)
max(a,c)
我要怎么打印出最大数呢?如果把print a放在max函数内就会打印出第一次对比和第二次对比的结果,我现在只想在最后打印结果该怎么办呢?
把函数体补充完整...max函数是要求有个返回值的..目前这函数中没有相关语句.
头像
remeber
论坛版主
帖子: 13005
注册时间: 2009-01-06 15:18
来自: 人间
送出感谢: 1 次
接收感谢: 22 次

Re: python自定义函数问题

#10

帖子 remeber » 2011-01-27 13:45

[quote="haozi3"]这样???

代码: 全选

def max(a,b):
    if a>b:return a
    else:return b

a=3
b=5

max(a,b)
试试就知道了呀.^^
“有一种被人抛诸脑后的过去,包含一些不该遗忘的点点滴滴。欢笑之余,我将故旧拾起,才刹见自己的薄情。人世间似乎存在着某种公平,每个人都曾被抛掷在他人的遗忘中;而今你所有哽咽难宣的话语,也正是你曾为人所期盼,却永远听不见的字句。” —赫曼 赫塞
haozi3
帖子: 71
注册时间: 2007-12-18 17:05
送出感谢: 0
接收感谢: 0

Re: python自定义函数问题

#11

帖子 haozi3 » 2011-01-27 13:49

remeber Jiraiya 写了:
haozi3 写了:这样???

代码: 全选

def max(a,b):
    if a>b:return a
    else:return b

a=3
b=5

max(a,b)
试试就知道了呀.^^

是正确的。我还是看了C的才知道要这么弄。谢谢了。
头像
cuihao
帖子: 4793
注册时间: 2008-07-24 11:33
来自: 郑州
送出感谢: 1 次
接收感谢: 89 次
联系:

Re: python自定义函数问题

#12

帖子 cuihao » 2011-01-27 14:43

haozi3 写了:
cuihao 写了:python的函数都是按值传递的吧,不能修改
什么意思?能说详细点吗?
就是说修改函数的形式参数,不会对实际参数造成影响,不会修改传入的变量。

比如
def func(a,b):
a=b
如果调用func(va, vb)并不会修改va。
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~
回复

回到 “Python/Php/Perl”