python3.5入门笔记(8) 函数

调用函数和参数

1、定义函数

  1. def关键字开头
  2. 所有传入参数和自变量必须放入圆括号中,可以在括号内定义参数
  3. 第一行可以选择性使用文档字符串
  4. 函数内容以冒号开始,要缩进
  5. Return 表示结束函数,不带表达式的return相当于返回none

基础方法实例:

def test():

    a=10

    b=20

    print(a)

    print(b)

    print(a+b)

test()

2、参数类型

(1)必须参数:必须以正确的顺序传入函数

def test(mm):

    print('必须参数:',mm)

    print('必须参数2:',mm)

test('hello,world')

>>>必须参数: hello,world

>>>必须参数2: hello,world

(2)关键字参数:函数调用时使用关键字参数传入值

def test(mm,nn):

    print('姓名',mm)

    print('年龄',nn)

    return

test('小雪',20)

test(nn=21,mm='小红')

>>>姓名 小雪

>>>年龄 20

>>>姓名 小红

>>>年龄 21

(3)默认参数:调用函数时,没有传递参数,会使用默认参数

def test(name,age=21):

 print('姓名:',name)

 print('年龄:',age)

 return

test('小萌')

>>>姓名: 小萌

>>>年龄: 21

#非默认参数要跟在默认参数之后

def enroll(name, gender, age=6, city='Beijing'):

    print('name:', name)

    print('gender:', gender)

    print('age:', age)

    print('city:', city)

enroll("kangkang",2)

>>>name: kangkang

>>>gender: 2

>>>age: 6

>>>city: Beijing

enroll("xiaoming",6,12,'重庆')

>>>name: xiaoming

>>>gender: 6

>>>age: 12

>>>city: 重庆

(4)可变参数:可变参数就是指传入的参数是可以改变的,可以是1个2个...,甚至不指定

def p(*a):

  print('输出:',a)

  return

p(1,2,(1,2))

>>>输出: (1, 2, (1, 2)

-------

test=('a','b','c','d')   ** 输出字典

def mm(name,**kw):

    print('姓名:',name,'其它:',kw)

mm('小雪',nn=test[0])

>>>姓名: 小雪 其它: {'nn': 'a'}

(5)组合参数

def test(p1,p2,p3=0,*vart,**kw):

 print('p1=',p1,'p2=',p2,'p3=',p3,'vart=',vart,'kw=',kw)

test(1,2,3,'abc',x=3)

>>>p1= 1 p2= 2 p3= 3 vart= ('abc',) kw= {'x': 3}

变量作用域

1局部变量

局部变量,变量只能在函数内部用;全局变量,函数可以在任意处使用

(1)def func(x):

        print('局部变量x为',x)

(2)func(10)    #局部变量x为 10

2全局变量

(1) 例子1

num=100

print('函数外num的值为:',num)

def fun():

  global num

  num=200

  print('函数内num的值为:',num)

fun()

print(num)

>>>>函数外num的值为: 100

>>>>函数内num的值为: 200

>>>>200

(2) global语句可以声明一个或多个变量为全局变量

def save_case_infos(case_urls):

    global case_total_num    # global声明

    for case_url in case_urls:

        case_total_num += 1

        print("current count: " ,case_total_num)

case_total_num = 0

urls = [r'http://cynhard.com/live/001',r'http://cynhard.com/live/002',

     r'http://cynhard.com/live/003']

save_case_infos(urls)

>>>current count:  1

>>>current count:  2

>>>current count:  3

返回函数

def sum_late(*args):

    def test():

        ax=0

        for n in args:

             ax=ax+n

        return ax

    return test

test=sum_late(1,2,3,4)

print(test())

>>>10

闭包:内部对外部函数变量进行引用,且不是全局作用域,内部函数称为闭包

闭包引用循环

def count():

    def f(j):

        def g():

            return j*j

        return g

    fs=[]

    for i in range(1,4):

        fs.append(f(i))

    return fs

f1,f2,f3=count()

print(f1())     1

print(f2())     4

print(f3())     9

递归函数+匿名函数+偏函数

1、递归函数

def fact(n):

    if n==1:

        return 1

    return n*fact(n-1)

print('函数归递结果:',fact(5))

>>>函数归递结果: 120        (5*4*3*2*1=120)

2匿名函数: lambda函数也叫匿名函数,即不使用def这样的标准语句定义函数

def f(x):

    return x**2

print(f(4))

>>>16

g = lambda x : x**2

print (g(4))

>>>16

def make_test(n):

    return lambda x: x+n

f=make_test(2)

g=make_test(6)

print(f(42))    44

print(g(46))   52

3、偏函数(partial function): 偏应用函数是一个表达式,包含函数的部分参数。返回值是一个新函数

(1)例1:

from functools import partial

def mod(n,m):

    return n%m

mod_by_100=partial(mod,100)

print(mod(100,7))             2

print(mod_by_100(7))       2

(2)例2:

from functools import partial

def test_partial(a, b, c, d):

    print(a,b,c,d)

test1 = partial(test_partial,1,2)

test1(3,4)         

>>>1,2,3,4

test2 =partial(test_partial,1,2,3,4)

test2(3)

>>>TypeError: test_partial() takes 4 positional arguments but 5 were given

test3 = partial(test_partial, d=4)

test3(1,2,3)    

>>>1,2,3,4

 

发布了28 篇原创文章 · 获赞 1 · 访问量 3189

猜你喜欢

转载自blog.csdn.net/pdd51testing/article/details/83789006