第八节-python中函数的介绍(上)

本文详细介绍了Python中的函数参数,包括形参与实参、可变与不可变类型参数、位置参数、关键字参数、默认值参数和可变长度参数。此外,还讲解了集合的定义、创建、添加元素、更新和删除元素等基本操作。通过实例展示了如何使用这些概念,帮助读者深入理解Python编程。
摘要由CSDN通过智能技术生成

python中函数参数的介绍和集合(set)的介绍

一、函数的介绍

- 函数介绍:
	- 函数是组织好的,可重复使用的,用来实现单一的,或相关联功能的代码段。
- 函数作用:
	- 提高应用的模块性与代码的复用性。
- 例如
	- len()函数
	- print()函数
	- input()函数等等

二、自定义函数

1、自定义函数的规则

- 定义规则:
	- 函数代码块以def关键词开头,后接函数标识符名称和圆括号()
	- 圆括号中间可以放入参数
	- 函数内容以冒号起始,并且缩进。
def function_name(param):
    print('func code')
  • 注意:
    • 函数只有在调用的时候才会执行,通过function_name(param)进行调用。

2、练习

  • 用函数打印九九乘法表
# 用函数打印九九乘法表
def multi_table():
    for i in range(1, 10):
        for j in range(1, i + 1):
            print(f'{j}*{i}={j * i}', end='\t')
        print(end='\n')


multi_table()  # 函数只有在调用的情况下才执行

三、函数的参数

1、形参与实参

- 形参:就是函数定义中的参数,没有实际的值,通过别人赋值后才有意义,相当于变量。
- 实参:就是条用函数时传入的参数,时一个实际存在的参数。
def function_name(param):  # param为形参
    print('func code')
function_name(param)  # param为实参

# 形参与实参
def test_one(b):  # b为形参
    pass


a = 1
test_one(a)  # a 为实参
# 整个过程,相当于:a=1  b=a

2、可变类型参数与不可变类型参数

- 不可变类型参数:在函数体内对变量重新赋值,相当于重新开辟了愉快内存来保存值
- 可变类型参数:在函数体内可以改变原有的值
# 可变类型参数与不可变类型参数
def test_one(a):
    # 整体为不可变对象
    a = 10
    print('inner', a)  # 10


a = 1
test_one(a)
print('outer', a)  # 1


def test_two(li):
    # 列表为可变数据类型
    li.extend([5, 6])
    print('inner', li)  # inner [1, 2, 3, 4, 5, 6]


li = [1, 2, 3, 4]
test_two(li)
print('outer', li)  # outer [1, 2, 3, 4, 5, 6]

3、位置参数

  • 位置参数:也就是实参与形参顺序一一对应,而不论变量名。
# 位置参数
def sum_nums(num1, num2):
    res = num1 + num2
    print(f'num1:{num1}')
    print(f'num2:{num2}')
    print(f'{num1}+{num2}={res}')


num1 = int(input('请输入num1'))
num2 = int(input('请输入num2'))
sum_nums(num1, num2)
'''打印结果:
请输入num110
请输入num220
num1:10
num2:20
10+20=30
'''
  • 改变实参中num1和num2的位置,结果如下:
def sum_nums(num1, num2):
    res = num1 + num2
    print(f'num1:{num1}')
    print(f'num2:{num2}')
    print(f'{num1}+{num2}={res}')


num1 = int(input('请输入num1'))
num2 = int(input('请输入num2'))
sum_nums(num2, num1)
'''打印结果:
请输入num110
请输入num220
num1:20
num2:10
20+10=30
'''
  • 结论:实参与形参的顺序一一对应。不论变量名。

4、关键字参数

  • 以形参=实参形式指定,不论参数位置。
# 关键字参数
def sum_nums(num1, num2):
    res = num1 + num2
    print(f'num1:{num1}')
    print(f'num2:{num2}')
    print(f'{num1}+{num2}={res}')


num1 = int(input('请输入num1'))
num2 = int(input('请输入num2'))
sum_nums(num1=num1, num2=num2)  # 无论顺序如何,结果都一样

5、默认值参数

- 默认值参数:形参chu进行赋值,所以当调用时不传该参数就默认使用形参处的值。当调用时传了该参数,则覆盖掉默认参数。
# 默认值参数
# 当实参不传时,就默认为形参中的值
def test_one(a, b=2):
    a = a + b
    print(a,b)


a = 1
test_one(a)  # 打印结果为3 2


# 当实参中传了,会覆盖掉形参中存在的值
def test_one(a, b=2):
    a = a + b
    print(a,b)


a = 1
test_one(a, 10)  # 打印结果为11 10

6、可变长度参数

- *args接收时会转为元组数据类型
- **kwargs接收时会转为字典数据类型
# 可变长度参数
def test_one(*args):  # *args为一个可变长度参数,会打包成元组
    print(args)


test_one()  # () args返回的时一个空元组,
test_one(1, 2, 3)  # (1, 2, 3)


def test_one(**kwargs):  # **kwargs为一个可变长度参数,会打包成字典
    print(kwargs)


test_one()  # () kwargs返回的时一个空字典,
test_one(a=1, b=2, c=3)  # {'a': 1, 'b': 2, 'c': 3}

四、集合(set)的介绍

1、集合的定义

集合(set)是一个无序的不重复元素的集,基本功能包括关系测试和消除重复元素。是可变的数据类型。
  集合数据类型的核心在于自动去重。

2、集合(set)的创建

集合使用大括号{}框定元素,并以逗号进行分隔。

s = {}  # 直接用{}括号创建的是字典
print(type(s))  # <class 'dict'>

s1 = set()
print(s1)  # set()
print(type(s1))  # <class 'set'>

s2 = set([1, 2, 3, 1, 2, 3, 4, 5, 6, 6, 5])
print(s2)  # {1, 2, 3, 4, 5, 6}  自动去重

s3 = set('hello world')
print(s3)  # {'w', 'h', 'r', 'e', 'd', 'o', 'l', ' '} 自动去重,且无序

3、集合(set)添加元素

通过set.add(key)方法可以添加元素到set中

s1 = set([1, 2, 2, 3, 3, 4, 5, 6])
s1.add(7)
print(s1)  # {1, 2, 3, 4, 5, 6, 7}

s1.add('Tom')
print(s1)  # {1, 2, 3, 4, 5, 6, 7, 'Tom'} 添加的元素可以是任意类型

s1.add([1, 2, 3])
print(s1)  # TypeError: unhashable type: 'list'同字典一样,只能添加不可变对象

4、集合(set)更新

可以使用set.update()方法,将另一个对象更新到已有的集合中,这一过程同样会进行去重。

s = set([1, 3, 2, 4, 5, 6, 5])
s.update('hello world')  # 将helloworld每个拆开添加到s中,任然去重。
print(s)  # {1, 2, 3, 4, 5, 6, 'l', 'o', 'e', ' ', 'w', 'h', 'd', 'r'}

5、集合(set)删除元素

set.remove(key):删除指定元素
set.pop():随机删除元素()中无参数

s = {1, 2, 3, 4}
# print(s[0])  # 没有下标概念,会报错 TypeError: 'set' object does not support indexing
s.remove(4)
print(s)  # {1, 2, 3}
# s.remove(5)
# print(s)  # 元素不存在时,会报错 KeyError: 5

s1 = set([1, 2, 3, 4, 5, 6, 7, 8, 9, 7, 10])
s1.pop()  # 随机删除
print(s1)  # {2, 3, 4, 5, 6, 7, 8, 9, 10}

注意:
集合不能取出元素,因为集合是无序的,没有不支持索引,也不支持字典那样读取键值对。

五、作业

1、 打印名片程序:输入姓名,电话号码,性别,最后打印出来名片

  • 控制姓名长度为6-20
  • 电话号码长度11
  • 性别只能允许输入男或女
  • 每一样信息不允许为空
while True:
    name = input('请输入姓名:')

    if len(name) < 6 or len(name) > 20:
        print('输入错误,姓名长度为6-20位,请重新输入')
    else:
        break
while True:
    tel = input('请输入电话:')
    if tel.isdigit() != True or len(tel) != 11:
        print('输入错误,电话为11位纯数字,请重新输入')
    else:
        break
while True:
    sex = input('请输入性别:')
    if sex not in ['男', '女']:
        print('输入错误,性别为男或女,请重新输入')
    else:
        break


def card(a, b, c):
    print(f'名片\n姓名:{a}\n电话:{b}\n性别:{c}')


card(name, tel, sex)

2、使用函数求前20个斐波那契数列斐波那契数列:1,1,2,3,5,8,13,21…即: 起始两项均为1,此后的项分别为前两项之和


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


li_num = [1, 1]
for i in range(1, 19):
    li_num.append(fun_sum(li_num[i - 1], li_num[i]))
print(li_num)

3、编写一段代码,定义一个函数求1-100之间所有整数的和,并调用该函数打印出结果


def num_sum():
    res = 0
    for i in range(1, 101):
        res = res + i
    print(res)


num_sum()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值