详解1-函数-python

本文详细介绍了Python函数的核心概念,包括函数的作用、定义、参数类型(位置参数、默认值参数、可变参数args和kwargs)、参数顺序、返回值的使用,以及全局变量和局部变量的区别。同时,探讨了可变和不可变类型的特性,并强调了函数注释的重要性。通过实例展示了如何在实际编程中应用这些概念。
摘要由CSDN通过智能技术生成

0、函数的作用

函数能够提高代码的复用性,让代码更简洁;封装隔离。

1、函数的定义

  • 格式

    def 函数名([参数]):
    	函数体
    
    
  • 函数名

    • 规范的变量名
    • 见名知意
    • 多个名称直接下划线分隔,首字母小写

2、函数的参数

2.1、位置参数和默认值参数

  • 位置参数,是必填的,调用函数时不传会报错。
  • 默认值参数是非必填的,如果不填,会采用默认值。
"""
注意:
1、位置参数在默认值参数之前
2、默认传参顺序为定义顺序
3、通过关键字可以更改传参顺序
"""


def borrow_book(book_name, username, number=1, school='1111'):
    print('进入{}借书系统'.format(school))
    print('{}要借阅的书名:《{}》,借阅的数量{}'.format(username, book_name, number))


borrow_book('狂人日记', '小明')
borrow_book('狂人日记', '小明', 2)
borrow_book('狂人日记', '小明', 3, '222')
borrow_book(username='小明', book_name='狂人日记')

2.2、可变参数args和kwargs

  • args
  • 特点:(1)参数是非必填的;(2)没有限制参数的个数;(3)传过来的参数放到args参数里,不限格式
"""
1、可变参数:
    *args: 接收多个位置参数,类型为元组
2、拆包和装包
    2.1、装包
        函数定义:def 函数名(*args) ---> 此处传参时,装包
        函数调用: 函数名(*列表) ---> 此处传参时,拆包
"""


def calc_sum(*args):
    sum = 0
    for i in args:
        sum += i
    print(sum)


# 装包
calc_sum(1, 2, 3)

list1 = [1, 2, 3, 4]
# 拆包
calc_sum(*list1)
  • kwargs

  • 特点:(1)参数是非必填;(2)没有限制参数个数;(3)所传参数必须是字典格式。

    """
    1、可变参数:
        **args: 接收多个关键字参数,类型为字典
    2、拆包和装包
        2.1、装包
            函数定义:def 函数名(**args) ---> 此处传参时,装包
            函数调用: 函数名(**字典) ---> 此处传参时,拆包
    """
    def show_book(**kwargs):
        print(kwargs)
    
    
    show_book()
    show_book(book_name='《西游记》', author='吴承恩')
    
    books = {'book_name': '《红楼梦》', 'author': '曹雪芹'}
    show_book(**books)
    

2.3、参数顺序

"""
参数顺序:位置参数>*args>默认值参数>**kwargs
系统函数:
    def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
    def format(self, *args, **kwargs): # known special case of str.format
"""
book = {'book_name': 'Web安全攻防', 'author': 'xlw', 'number': 5}
print(book, 'hello', sep='--')

print('{}{}{}'.format('11', '22', '33'))

print('{name}-{age}-{sex}'.format(name='11', age='22', sex='男'))

# 列表和字符串相互转换
list1 = ['a', 'b', 'c']
result = '-'.join(list1)
print(result)
print(result.split('-'))

3、函数的返回值

关键字:return

return的作用

  • 调用完函数后,将结果返回
  • 函数里面遇到return就立即结束。

有的函数不只有一个返回值,函数如果返回多个值的话,会把这几个值放到一个元组里。另外,也可以用多个值来接收

"""
关键字:return
"""


def sum(a, b):
    return a + b


s = sum(3, 4)
s += 10
print(s)

4、全局变量和局部变量

  • 全局变量是公共的变量,都可以用的变量。一般不推荐用全局变量,因为全局变量有以下2个缺点:(1)不安全,因为所有人都可以改;(2)会一直占着内存。
  • 函数里面定义的变量都是局部变量,只能在函数里面用,出了函数就不能用了
a = 100


def test01():
    a = 10
    b = 1
    print('a={}, b={}'.format(a, b))


def test02():
    print('a={}'.format(a))


def test03():
    global a
    a = 11
    print('a={}'.format(a))


test01()
test02()
test03()

结果是什么呢?

a=10, b=1
a=100
a=11
  • 全局变量在函数内部可读,不可写;如果想在函数内部修改全局变量的值,需要事先通过关键字global声明。

5、可变和不可变类型

  • 不可变:当改变变量的值时,地址发生了改变
  • int str float bool
  • 可变:改变变量的值时,地址不会反正改变
    • list dict set
a = 1
print(id(a))
a = 2
print(id(a))

list1 = [1, 2, 3]
print(id(list1))
list1.append(4)
print(id(list1))

6、函数注释

  • 单行注释: #
  • 多行注释: “”" 注释内容 “”"
    • “基本注释内容”
    • :para 参数注释
    • :return 返回值注释
def login(username, pwd):
    """
    登录
    :param username: 用户名 
    :param pwd: 密码
    :return: 
    """
    pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gaog2zh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值