zoukankan      html  css  js  c++  java
  • Python学习(2)

    python基础学习(二)
    2.1 python定义函数用def,没有返回类型?def myabs(x) if x>0: return x
    python定义的函数可以多个直接一起返回,这一点和java有点不同。
    例如:import math
    def move(x,y,step,angle=0):
    nx=x+step*math.cos(angle)
    ny=y-step*math.sin(angle)
    return nx,ny
    x,y=move(100,100,20,math.pi/6)
    print x,y

    python默认参数:可以解决参数个数不相对的地方,但是默认参数必须放在后面。另外默认参数必须使用不可变的对象来实现,比如str,None ,tuple
    不能用List。原因如下:
    def add(L=[]):
    L.append('abc')
    return L
    print add()
    print add()
    print add()
    结果输出如下:
    ['abc']
    ['abc', 'abc']
    ['abc', 'abc', 'abc']
    原因是:python在定义函数的时候就把默认参数的值计算出来,其结果是,每次用默认参数调用函数的时候,L因为是可变的对象,
    所以L每次被默认参数调用都相当于记住。
    修改:def add_end(L=None):
    if L is None:
    L = []
    L.append('END')
    return L
    简单来说就是调用默认函数时不要用可变的对象。
    python可变参数:即函数参数的个数可以随意改变。就是调用的时候用的参数是List或者tuple
    例如:
    def function(numbers):
    sum=0
    for number in numbers:
    sum+=number
    return sum
    print function([1,2,3,4,5])

    第二中情况:当调用函数时没有用到list或者是tuple那么上面的形参就要用可变的*number,情况如下:
    def function(*numbers):
    sum=0
    for number in numbers:
    sum+=number
    return sum
    print function(1,2,3,4,5)
    python关键字参数:关键字参数就是形参上面加**,比如**kw,然后这个参数可以接受参数名和它的值,自动组装成一个dict。例如:
    def func(a, b, c=0, *args, **kw):
    print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw
    func(1,2,3,'a','x','c',x=6)
    a = 1 b = 2 c = 3 args = ('a', 'x', 'c') kw = {'x': 6}
    递归函数(学习c的时候被这个折磨过。。。):a=raw_input('enter a number:')输入的任何东西自动转化成字符串。
    递归就是不断地调用自身,然后会有一个结束条件。用栈实现,就是最开始算的是栈最高位置的函数值,然后
    返回给它的下一层以供下一层使用,以此类推。最后算出你写的那个函数的值。

  • 相关阅读:
    为什么Android的图片质量会比iPhone的差?
    第二次作业-编程
    印像最深的三位老师
    c++的类型转换(转)
    SpringMVC入门详解
    java基础
    springmvc
    Maven配置下载包速度更快
    spring中的bean.xml
    pom.xml依赖
  • 原文地址:https://www.cnblogs.com/lout/p/3831010.html
Copyright © 2011-2022 走看看