python:函数基础(1)

1,函数的基本概念
函数是可重用的程序代码块。
一个程序由一个个任务组成;函数就是代表一个任务或者一个功能。
函数是代码复用的通用机制。

2,Python 函数的分类
1)内置函数
2) 标准库函数
我们可以通过 import 语句导入库,然后使用其中定义的函数
3) 第三方库函数
Python 社区也提供了很多高质量的库。下载安装这些库后,也是通过 import 语句导
入,然后可以使用这些第三方库的函数
4) 用户自定义函数
用户自己定义的函数,显然也是开发中适应用户自身需求定义的函数。

3,函数名
函数名称必须遵循 标识符 规则 数字,字母,下划线,并且不能以数 字开头,不能使用关键字

4,函数的定义和调用
Python 中,定义函数的语法如下:
def 函数名 ([参数列表]) :
‘’‘文档字符串’’’
函数体/若干语句
要点:
1—— 我们使用 def 来定义函数,然后就是一个空格和函数名称;
(1) Python 执行 def 时,会创建一个函数对象,并绑定到函数名变量上。
2 ——参数列表
(1) 圆括号内是形式参数列表,有多个参数则使用逗号隔开
(2) 形式参数不需要声明类型,也不需要指定函数返回值类型
(3) 无参数,也必须保留空的圆括号
(4) 实参列表必须与形参列表一一对应
3—— return 返回值
(1) 如果函数体中包含 return 语句,则结束函数执行并返回值;
(2) 如果函数体中不包含 return 语句,则返回 None 值。
北京尚学堂·百战程序员 实战 系统 好教育
4 ——调用函数之前,必须要先定义函数,即先调用 def 创建函数对象
(1) 内置函数对象会自动创建
(2) 标准库和第三方库函数,通过 import 导入模块时,会执行模块中的 def 语句

def dylc():
        print('西单大厦欢迎你')
        print('1楼 西装')
        print('2楼 女装')
        print('3楼 运动装')
    i=int(input('请输入楼层:'))
    if i==1:
        dylc()
    elif i==2:
        dylc()
    elif i==3:
        dylc()

def jiafa(a,b):
    #函数:求两个数的和,ab为传入参数
    c=a+b
    print('%d+%d=%d'%(a,b,c)) #输出计算结果
jiafa(2,9) #调研函数

5,返回值
return 返回值要点:
1)如果函数体中包含 return 语句,则结束函数执行并返回值;
2) 如果函数体中不包含 return 语句,则返回 None 值。
3) 要返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”即可。
例1

def qiuhe(a,b):
    c=a+b
    return c #返回c值 12
x=qiuhe(3,9)  #返回从,并把值赋给x
if x>11:
    print('打8折')
else:
    print('不打折')

输出:
打8折

例2

def jisuan(a,b):
    c=a+b
    d=a-b
    e=a*b
    f=a/b
    return a,d,e,f
x=jisuan(2,5)
print(x)   #输出结果:一起输出  ,(2, -3, 10, 0.4) 为元祖
k,v,m,n=jisuan(2,5)
print(k,v,m,n)  #输出结果:2 -3 10 0.4 值

6,参数
1)必须参数::#传入的参数:与定义的形参顺序一一对应
2)关键字参数:#参数位置匹配,关键字参数,与形参的位置顺序无关
3)默认参数: #默认参数必须指向不变的对象默认参数一定要用不可变对象,如果是 可变对象,程序运行时会有逻辑错误
4)可变参数 #*args 结果类型是元祖,传递值是任意类型
**kwargs结果类型是字典,传递值是以key=value方式传入

def md(name,age,sex='男'):   #性别默认为男    默认参数
    print('姓名:',name,end='\t')
    print('年龄:',age,end='\t')
    print('性别:',sex)
md(age='18',name='张三')     #关键字不用按顺序
md('李四',18)                 #必须参数按顺序
md('王五',19,sex='男')   #性别默认为男    默认参数
md('王五',19,sex='女',)   #改变性别为女 位置参数必须在默认参数左边

输出:
姓名: 张三 年龄: 18 性别: 男
姓名: 李四 年龄: 18 性别: 男
姓名: 王五 年龄: 19 性别: 男
姓名: 王五 年龄: 19 性别: 女

,7,python 函数的参数传递

不可变类型:整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
可变类型:列表,字典。如 fun(la),则是将 la 真正的传过去, 修改后fun外部的la也会受影响

def jia(a):
    a+=2
    print(a)
d=6
jia(d)   #调用函数输出a为8
print(d) #输出d :6
print(jia(d))  # 1:输出jia(d):8  #2:无输出值也无返回值,故None
                #return [表达式] 结束函数,不带表达式的return相当于返回 None

输出:
8
6
8
None

def kb(a):
    a.append(3)
b=[]
kb(b)
print(kb(b))  #None 
print(b)  #[3, 3]

输出:
None
[3, 3]

#容易出错

def shx(a,b,d=[]):
    d.append('x')
    print(d)
shx(1,2,d=[4])
shx(2,3,d=[])

输出:
[4, ‘x’]
[‘x’]

def shx(a,b,d=[]):
    d.append('x')
    print(d)
#shx(1,2,d=[4])
#shx(2,3,d=[])
shx(2,3)    #['x']
shx(5,6)    #['x', 'x']

8,定义函数时参数的顺序: 位置参数,元组参数,默认参数,字典参数
#可变参数(args,**kwargs): **kwargs必须放在args后面, ** 具有打散字典的功能

def pt(*args):    # *args 元祖
    print(args)
    for x in args:
        print(x,end=' ')
    print()
pt(1,2,3)
pt(1,2,3,4,5,6)

输出:
(1, 2, 3)
1 2 3
(1, 2, 3, 4, 5, 6)
1 2 3 4 5 6

def xsh(**kwargs):
    print(kwargs)
    for k,v in kwargs.items():
        print(k,v,end='')
    print()
xsh(name='张三',age='18',sex='男')
xsh(name='李四',age='24',sex='女',address='湖北')

输出:
{‘name’: ‘张三’, ‘age’: ‘18’, ‘sex’: ‘男’}
name 张三age 18sex 男
{‘name’: ‘李四’, ‘age’: ‘24’, ‘sex’: ‘女’, ‘address’: ‘湖北’}
name 李四age 24sex 女address 湖北

猜你喜欢

转载自blog.csdn.net/aixiangnan/article/details/88809855
今日推荐