自学python-函数01

#函数的学习
#函数简介:函数也是一个对象,对象是内存中专门用来存储数据的一块区域的
# 函数中可以用来保存可执行代码,并且可以在需要时可以对这些语句进行多次调用
#创建函数;
#   def 函数名([形参1,形参2,----形参n]):
#               代码块儿
def fn():
    print('这是我的第一个函数')
    print('今天星期天')
    print('明天星期一')
#函数中保存的代码不会立即执行,需要调用才可以。

#打印fn
print(fn) #打印函数的内存地址
print(type(fn)) #输出函数的类型
#调用函数:函数对象()
fn()
#fn是函数对象,fn()是调用函数 ,#print是函数对象,print是调用函数
#定义函数是要实现某种功能的
#函数参数:在定义函数的时候,可以在函数名后的()中定义数量不等的形参,用逗号隔开,
#形参:定义形参就相当于在函数内部声明了变量,但是并不赋值
#实参:如果函数定义时指定了形参,那么在调用函数的时候也必须传递实参,实参将会赋值给形参,有几个形参就要有几个实参
#定义形参时可以为形参指定默认值,指定默认值后,用户传递参数时默认值没有用,不传的时候有用,
#实参的传递方式,位置参数:就是将对应位置的实参赋值给对应位置的形参。关键字参数:可以不按照形参的位置传递,而根据参数名去传递参数
#关键字参数:fn(b=1,a=2,c=3),
# 位置参数和关键参数可以混合使用。例如f(1,30,3,c=3)但是位置参数必须写在前面
#函数在调用时,解析器不会检查实参的类型,实参可以传递任意类型的对象
#在函数中对形参进行重新赋值,不会影响其他的变量
#如果形参执行的是一个对象,当我们通过形参去修改对象时会影响到所有指向对象的变量
#定义一个函数,可以用来求任意两个数的和
def sum(a, b):
      print('a=',a)
      print('b=',b)
      print('两数字之和为',a+b)
sum(1,3)
#定义一个函数,可以用来求任意三个数的乘积
def mx(a,b,c):
    print('a=',a)
    print('b=',b)
    print('c=',c)
    print('其三个数的乘积为',a*b*c)

mx(2,3,4)
#定义一个函数,可以根据不同的用户名显示不同的欢迎信息
def user_name(name):
    if name=='孙悟空':
        print('欢迎孙悟空先生')
    elif name=='猪八戒':
        print('欢迎猪八戒先生')
    elif name=='唐三藏':
        print('欢迎师傅')
    else:
        print('您输入的用户名有误')
user_name('孙悟空')

def fn4(a):
    a[0]=30
    print('a=',a,id(a))

c=10
c=[1,2,3]

fn4(c.copy())#想改变形参但是不改变实参的值用copy()或者是切片
print(c,id(c))
#不定长的参数
#定义一个函数,可以求任意个数值的和
def sum(*a):  #定义函数
    #定义一个变量,来保存结果
    result=0
    for n in a:
        result+=n
    print('结果为',result)
sum(123)
    #遍历元组,并将元组中的数进行累加

sum(123,123)  #调用函数
#定义函数的时候,可以在形参的钱买你加一个*,这样这个形参将会获得到所有的实参
#它将会将所有的实参保存到一个元组中
a,b,*c=(1,2,3,4,56,6,66,456)#a=1,b=2,其他的都赋值给c,以元组的形式
print(c)
#*a会接受所有的实参,并且会将这些实参统一保存到一个元组中(装包)
#带星号的形参只能由一个,带※号的参数,可以和其他参数配合使用
#可变参数不是必须写在最后,但是注意,带*的参数后面的所有参数都要是关键字参数
def fn23(q,*b,a):
    print(q)
    print(b)
    print('a=',a,type(a))
fn23(1,2,23,a=3)
#如果在形参的开头直接写一个*,则要求我们点的是所有的参数必须以关键字参数的形式传递,带*的形参只能是接受位置参数
def ffn(*,a,b,c):
    print(a)
    print(b)
    print(c)
ffn(a=3,b=3,c=34)
#**形参可以接受其他的关键字参数,它会将这些参数统一保存到一个字典中,其中字典的key就是参数的名字,字典的值就是参数的值
#**形参只能有一个,并且必须写在所有参数的最后
def fn3(b,**a):
    print(b)
    print('a=',a,type(a))
fn3(b=1,d=3,c=3)



#参数的解包(拆包)
def ff4(a,b,c):
    print(a)
    print(b)
    print(c)
#创建一个元组
t=(10,20,30)
#传递实参时,也可以在序列类型的参数前添加*,这样他会自动将序列中的 元素一次作为参数传输
#这里要求序列中元素的个数必须和形参的个数一致
ff4(*t)
#创建一个字典,**是对一个字典解包,*是对元组解包
d={'a':100,'b':200,'c':300}
ff4(**d)


#返回值:返回值就是函数执行以后返回的结果
#可以通过return来指定函数的返回值
#可以直接使用函数的返回值,也可以通过一个变量来接受函数的返回值
def ffnn():
    return 100
#return 后面跟着什么值,函数就会返回什么值
#return后可以跟任意的对象,甚至是一个函数,如果仅仅写一个return或者不写return则相当于return none
#在函数中retrun后的语句都不会执行
#break 用来退出当前循环
#continue 是用来跳过当次循环
#return 结束整个函数
b=ffnn() #ffnn()这个函数的执行结果就是他的返回值
print(b)#或者是print(ffnn())
def fn5():
    return 10
#fn5和fn5()的区别
print(fn5)#fn5是函数对象,打印fn5实际是在打印函数对象
print(fn5())#fn5()是在调用函数,打印fn5()实际上是在打印fn5()函数的返回值



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值