Python基础编程(十三)——函数1

本篇文章主要是对python学习时的一些总结,作为学习笔记记录。

函数是定义好的,可以重复使用的,具有特定功能的代码块

对于编程来说,使用函数的优点主要有:

  • 提高代码的可复用性
  • 提高代码的可维护性
  • 提高代码的可读性
  • 易于纠错
  • 便于团队协作

函数定义

函数定义具有一定的规则:

  • 函数代码块以def关键字开头,后接函数名和(),以冒号结尾
  • 函数名命名规则与变量名命名规则相同,尽量采用下划线分隔的形式或者驼峰命名法命名
  • 函数名最好不要与系统函数重名,避免使用冲突
  • 函数形参位于()中
  • 函数体要注意缩进
  • 如果函数有返回值,需要书写return expression,没有return则返回None
  • 在函数定义之前或函数体内部最好有该函数的使用说明
def func(var1, var2):
    '''
    :param var1: 
    :param var2: 
    :return: 
    '''
    ......
    [return expression]

函数参数

实参和形参

  • 函数形参是指函数定义时()内的参数列表
  • 函数实参是指函数调用时()内的表达式
  • 对于不许传递参数的函数来说,可以没有参数实参和形参

参数分类

  • 位置参数:实参顺序必须和形参顺序完全一致,形参顺序决定实参顺序
  • 关键字参数:函数调用时,实参可以是key-value,key为形参名,value为传递的变量值,利用关键字参数不必关心形参的顺序
  • 默认参数:形参也可以给定一个值,那么函数在调用时就可以不用传递实参,从而可以简化调用
    • 默认参数必须放到最右边
    • 如果实参不为空,则默认值被覆盖
    • 默认值只计算一次
    • 默认值必须是不可变对象
  • 可变参数:传入的参数个数是可变的,可以是0个,1个或是多个
    • 使用 * 接受任意数量的位置参数,此时该可变参数被当作tuple
    • 使用 ** 接受任意数量的关键字参数,此时该可变参数被当作dict

参数组合

当存在多种形式的形参类型时,各类形参出现先后顺序为:位置参数,默认值参数,*args,**kwargs

def func(var1, var2, var3 = 10, *args, **kwargs):
    print('var1 is:', var1)
    print('var2 is:', var2)
    print('var3 is:', var3)
    print('args is:', args)
    print('kwargs is:', kwargs)
    
func(1,20)
print('*********')
func(var2 = 1,var1 = 20)
print('*********')
func(1,20,var3 = 40)
print('*********')
func(1,20,30,40,50,var4 = 60)

其中var1,var2为位置参数,var3为默认参数,args,kwargs为可变参数。

命令行参数

如果要获取命令行传递给python文件的参数可以使用sys模块的argv来获取。

import sys

print(sys.argv)

结果为:

['D:\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py', '-f', 'C:\\Users\\wood\\AppData\\Roaming\\jupyter\\runtime\\kernel-600692a8-7dff-4b01-83c3-c4296cfabdab.json']

函数调用

函数定义之后就可以使用函数,使用函数的过程叫做函数调用

为了函数的正确调用,必须保证参数传递正确无误。对上面的函数进行调用为:

var1 is: 1
var2 is: 20
var3 is: 10
args is: ()
kwargs is: {}
*********
var1 is: 20
var2 is: 1
var3 is: 10
args is: ()
kwargs is: {}
*********
var1 is: 1
var2 is: 20
var3 is: 40
args is: ()
kwargs is: {}
*********
var1 is: 1
var2 is: 20
var3 is: 30
args is: (40, 50)
kwargs is: {'var4': 60}

返回值

如果函数外部要用到函数内部的变量,可以利用return将该变量返回。

  • 如果没有return,函数返回None
  • return可以返回一个值,也可以返回多个值,多个值以元组的形式返回
  • 执行完return语句后,函数结束返回调用处
def func():
    return 1

def foo():
    return 1,2,3

print(type(func()))
print(func())
print(type(foo()))
print(foo())

结果为:

<class 'int'>
1
<class 'tuple'>
(1, 2, 3)

文档字符串

函数文档字符串(docstring)是在函数开头,用来对接口进行解释,相当于帮助文档。函数文档一般包含:

  • 函数的基础信息
  • 函数的功能描述
  • 函数形参的类型和使用信息

文档字符串书写规则:

  • 必须在函数的首行
  • 使用三引号注释的多行字符串
  • 函数文档的第一行一般描述函数的主要功能,第二行空,第三行详细描述
  • 可以使用__doc__属性查看文档字符串
def func(var1, var2):
    '''
    :param var1:
    :param var2:
    :return:
    '''
    print('func')


print(func.__doc__)

结果为:

    :param var1:
    :param var2:
    :return:

参数传递

python的参数传递是值传递,这里的值是指变量的引用(地址),而不是变量的值。不存在值传递和引用传递的区别。简单说来,python的参数传递可以认为是C/C++中的对象引用传递,对象又可以分为:

  • 不可变对象:int、float、None、complex、bool、tuple、str、range

  • 可变对象:dict、list

不可变对象为不可以在函数内部修改函数外部的变量,可变对象为可以在函数内部修改函数外部的变量。

空函数

空语句借助空语句pass实现,函数体实际上不具有任何功能。

def func():
    pass
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值