手记

python的函数

function 的参数传递
python的变量是一个对象的引用,变量与变量之间的赋值是对同一个对象的引用,当变量重新赋值对象的时候,是将变量指向一个新的对象。

python实参向形参传送数据的方式是值传递。

def change(a,b):
    """
     python交换2 个值
    """
    a,b=b,a   
>>> a,b=2,3
>>> change(a,b)
>>> print("a={} b={}".format(a,b))
a=2 b=3

python可以通过,可变对象修改参数,比如list和dictionary。

def change(lt):
    """
     python交换2 个值
    """
    lt[0],lt[1]=lt[1],lt[0]
>>> lt
[3, 2]
>>> change(lt)
>>> lt
[2, 3]

可变长度的参数,程序设计中会遇到参数不固定的情况。这时候就需要使用可变长度的函数参数来实现相关功能。python中有2 中可变参数,dict和dictionary

def display_tulp(*tp):
    for elem in tp:
        print("element={}".format(elem),end=",")
>>> t1=1,2,3
>>> display_tulp(*t1)
element=1,element=2,element=3,
>>> t2=11,22,33,55,66
>>> display_tulp(t2)
element=(11, 22, 33, 55, 66),

其它类型的参数,必须在可变参数之前,如 fun(name,old=66,*sub)

字典可变长的参数
在dictionary中,关键字为参数名,值为相应的参数,其放在函数参数最后以**开头的参数。

def display_dict(**dict):
    for item in dict.keys:
        print("{}:,{}".format(item,dict[item]))

出现了一点错误

>>> a={1:'a',2:'b'}
>>> display_dict(**a)
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    display_dict(**a)
TypeError: display_dict() keywords must be strings

这个二分查找,递归有点小问题。有大佬发现指明一下,我对照了其它人的博客,没有发现,汗啊。这个bug找不到。

def find(lt,k,l,r):

    if l<=r:
        mid=(l+r)//2
        if lt[mid]==k:
            return mid+1
        else:
            if lt[mid]>k:
                find(lt,k,l,mid-1)
            else:
                find(lt,k,mid+1,r)
    else:
        return -1

变量的作用域。

在一个函数体内,或者语句块内定义的变量 称为局部变量。局部变量,自在定义的局部块内有效。

在函数之外定义的变量,称为全局变量,它可以被多个函数引用。

在函数体内,要为全局变量赋值,可以使用global语句,表明变量是全局的。

def display():
    global x
    x=68
    y=22
    print(" no2: x={0},y={1}".format(x,y))
x=11
y=12
print("no1:",x,y)
display()
print("no3:",x,y)
no1: 11 12
 no2: x=68,y=22
no3: 68 12

匿名函数,使用lambda表达式
lambda [参数1,[参数2,参数3。。。参数n]]:表达式

:冒号前面的是参数,后面表达式,但是在表现形式上只返回一个值。

>>> f=lambda x,y:x+y
>>> f(2,6)
8

好处,可以不用担心函数名冲突,匿名函数也是一个对象,可以把匿名函数赋给一个变量,在利用变量调用该函数

模块,可以理解为一个.py的文件。 import name ,导入模块。
导入特定的属性或者库, from 模块名 import name

比如: import numpy as np

>>> from math import sqrt
>>> sqrt(4)
2.0

大约,就是这样,python的 文件,异常,面向对象,图形。
争取5篇文章内,搞得,在水一下,爬虫,科学计算,
不在玩了,我已经 把语法糖拿下来了。 准备转入j2se,j2ee,这是我的主攻。

还有科学技术,作图,spider等,怎么学习,有人,给一个意见没有,感觉这里面函数参数,太多。手上没有好的书籍。

0人推荐
随时随地看视频
慕课网APP