Python 之函数基础

 

一、什么是函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数的定义

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

 

二、函数相关的几个定义

 返回值  函数外部的代码想要获取函数的执行结果 ,就可以在函数里用return 语句把结果返回

实例演示

 

全局变量 与局部变量

  • 在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
  • 全局变量作用域是整个程序,局部变量作用域是定义该变量的函数。
  • 当全局变量与局部变量同名时,在定义局部变量的函数内,局部变量起作用;在其它地方全局变量起作用

实例演示

 

name = "bob"  

def change_name(name):
    print("before change", name)
    name = "jack"
    print("after change", name)

# 调用输出

before change bob
after change jack
查看name bob

 

全局变量的修改

name = "bob"


def change_name():
    global name
    name = "bill bobs"
    print("after chage", name)

# 调用输出 

change_name()
print("在外面查看 name", name)

after chage bill bobs
在外面查看 name bill bobs

作用域

作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

 

三、几种常见的函数类型

1、位置参数

1.1 定义一个无参函数

# 定义一个say 函数

def say():
    print("say hello")


# 执行后
say()
say hello

1.2 定义一个有参函数

def add(x, y):
    return x + y

 print(add(3, 5))

# 执行后
8

 

2、关键字参数

# 函数调用的时候可以通过健值加以指定,避免了函数传参的顺序要求

def teacher(name, age, level):
    print("姓名是 %s,年龄是%s,职级是%s" % (name, age, level))


# 调用输出结果
teacher(age=32, name="张磊", level="中级")  # 关键字参数,可以不按照顺序出现 name,age,level
姓名是 张磊,年龄是32,职级是中级

 

3、默认参数 

def student(name, age, sex="female"):
    print(name, age, sex)

#掉用 输出
student("张三", 24, "meale") 
student("李四", 21)

张三 24 meale  # 不指定sex 的话,默认为 female
李四 21 female

# 调用输出

student(sex="male", "张三", 32)

# 报错 positional argument follows keyword argument

#关键字参数,必须放在位置参数之后

 

4、可变长参数

 4.1  *args   变成参数1 返回的是元组

def test(*args):
    return args

print(test("a"), type(test("a")))
print(test("a", "b", "c"))

#
输出结果

('a',) <class 'tuple'>
('a', 'b', 'c')



 

4.2  可变长参数2   **kwargs  返回的是一个  字典

def foo(**kwargs):
    return kwargs

# 调用 
print(foo())
print(foo(x=1), type(foo(x=1)))
print(foo(x=1, y=3))


# 输出结果
{}
{'x': 1} <class 'dict'>
{'x': 1, 'y': 3}

 

5、 函数的混用

def student1(name, age, address, sex="male", *args, **kwargs):

    print("姓名是 %s,年龄是%s,地址是%s,性别是%s,爱好是%s" % (name, age, address, sex, args))


# 调用

student1("张三", 27, "上海", "male", ("读书", "跑步"))

# 输出
姓名是 张三,年龄是27,地址是上海,性别是male,爱好是(('读书', '跑步'),)

 

四、匿名函数 

 lambda arg1,arg2,.....argn:expression

匿名函数不需要return 来返回值,表达式本身结果就是返回值

演示

普通函数 

def func(a, b, c):
    return a + b + c

# 输出
print(func(1, 2, 3))

lambda 函数

f = lambda a,b,c: a + b + c
print(f(1, 2, 3))

 

posted @ 2018-11-06 09:10  水滴石川  阅读(104)  评论(0)    收藏  举报