python——函数入门

168 阅读4分钟

函数

①函数是组织好的、可重复的、用来实现单一或联功能的代码片段

②函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。

③你也可以自己创建函数,这被叫做用户自定义函数。

函数的定义

①函数代码以 def 关键词开头,后接函数标识符名称和圆括号()。

②任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

③函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明

④函数内容以冒号起始,并且缩进。

⑤return [表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None

# 语法
def function(a,b):
   """函数功能说明"""
      代码1
      代码2
      '''
      return   [表达式]

函数的调用

①定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。

②函数必须调用才会进行执行

③不同的需求,参数可有可⽆。

④在Python中,函数必须先定义后使用。

# ①定义函数
def func1():
    print("我的第一个函数")


# ②调用函数
# 方法一
func1()
# 方法二(不重要)
text = func1
text()

函数的参数

必备参数

①必备参数须以正确的顺序传入函数。

②调用时的数量必须和声明时的一样。

③调用demo()函数,你必须传入一个参数,不然会出现语法错误:**

# 例:实现两个数相除
def func2(a, b):
    result = a / b
    print(result)


func2(1, 2)  # >>>0.5
func2(2, 1)  # >>>2.0


# 例:实现任意两数之间的累加
def func3(a, b):
    result = 0
    for i in range(a, b + 1):
        result += i
    print(result)


func3(1, 100)
func3(3, 88)

关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

# 例:自我介绍

def func4(name, age, sex, love):
    print(f"大家好,我是{name},今年{age}岁,性别{sex},爱好{love}.")


name1 = "坤哥"
age1 = 22
sex1 = "女"
love1 = "crtl"
func4(name1, age1, sex1, love1) 
# >>>大家好,我是坤哥,今年22岁,性别女,爱好crtl.

默认参数

调用函数时,默认参数的值如果没有传入,则被认为是默认值。

# 例:自我介绍
def func5(name="坤哥", age=18, sex="女", love="唱歌"):
    print(f"大家好,我是{name},今年{age}岁,性别{sex},爱好{love}.")


func5()  
# >>>大家好,我是坤哥,今年18岁,性别女,爱好唱歌.
func5(name="李四", age=22)  
# >>>大家好,我是李四,今年22岁,性别女,爱好唱歌.

不定长参数

①python自定义函数中有两种不定长参数,第一种是*args,在传入额外的参数时可以不用指明参数名,直接传入参数值即可。

②第二种是**kwargs,这种类型返回的是字典,传入时需要指定参数名。

③加了一个星号 * 不定长参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。

④加了两个星号 ** 的参数会以字典的形式导入,存放已命名的变量参数。

def func6(*args):
    print(args)


func6(1, 2, 3, 4, 5, "张三")  # >>>(1, 2, 3, 4, 5, '张三')


def func7(name, *args):
    print(f"name:{name}")
    print(f"args:{args}")


func7("张三", "李四", "王五")
"""
>>>
    name:张三
    args:('李四', '王五')
"""


def func8(name, *args, **kwargs):
    print(f"name:{name}")
    print(f"args:{args}")
    print(f"kwargs:{kwargs}")


# func8("张三", "李四", "王五", "赵六", name="坤哥", age=10, love="唱歌")
# 报错字典名字不能和参数名字相同
func8("张三", "李四", "王五", "赵六", name1="坤哥", age=10, love="唱歌")
"""
>>>
    name:张三
    args:('李四', '王五', '赵六')
    kwargs:{'name1': '坤哥', 'age': 10, 'love': '唱歌'}
"""

函数的返回值

return [表达式] 退出函数

函数若没有返回值则默认为空None

# 例:
def func9():
    print("没有返回值")


print(func9())
"""
>>>
    没有返回值
    None
"""
name = func9()
print(name)  # >>> None


# 函数运行到return时,会退出函数
# 例:
def func10():
    for i in range(1, 10):
        return i


print(func10())  # >>> 1     当运行到return时,退出函数,不在执行循环

变量

一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。

变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。

全局变量

函数内外都可使用的变量

若要修改全局变量,则使用 global 声明全局变量,同时可以修改全局变量

在全局变量中,若变量为可变类型,则不需要声明全局变量也可使用,或修改全局变量。

若全局变量为不可变类型,则需要声明全局变量

局部变量

只能在函数内部使用的变量

num = 10


def func11():
    result1 = num + 10
    print(result1)


func11()           
# >>> 20


def func12():
    global num   # 声明num为全局变量
    num = 12     # 修改全局变量


func12()
result = 10 + num
print(result)           
# >>> 22