20200716 函数、参数

  1. 定义

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
2.

格式

def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return [expression]

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

#定义一个函数
def dayin(str):
 print(str)

#调用函数
dayin('这是你给str赋的值')

***注意:***在Python中变量是没有类型,她仅仅是一个对象的引用(一个指针),可以是 List 类型对象,也可以指向 String 类型对象。
3. 当定义的函数有多个参数时
可以对应的赋值,即使顺序与定义时的不同也可以

def test(name,age):
    print('姓名:',name)
    print('年龄:',age)
    return
test(age='10',name='Jack')
  1. 在定义函数时,可以给参数一个默认值
def test2(name,age=10):
    print('默认的年龄是:',age)
    return
test2(name='jack')

在没有给定这个参数的值时,会用默认的值
4. 不定长参数
输入的参数可以比定义的多
格式:

def 函数名([formal_args,] *var_args_tuple ):
   "函数_文档字符串"
   function_suite
   return [expression]

加了星号()的变量名会存放所有未命名的变量参数。
已经命名的就不会放在里面
加了星号 * 的参数会以
**元组(tuple)的形式***导入,存放所有未命名的变量参数。
两个星号 ** 的参数会以字典的形式导入。


def test3(name,*others):
    print('结果')
    print(name)
    for i in others:
        
        print(i)
    return
test3('这波啊')
test3('这波','是','肉蛋','冲击')

疑问:用了format()函数之后的到不同的结果

def test3(name,*others):
    print('结果:'.format(name))
    for i in others:
        
        print('结果二:'.format(i))
    return
test3('这波啊')
test3('这波','是','肉蛋','冲击')
  1. 使用lambda来创建匿名函数
    语法
lambda [arg1 [,arg2,.....argn]]:expression

lambda [参数1,参数2,参数3]:表达式

参数

1.def sample(参数):这里的给了形参(形式上的参数,用以站位)那么调用他时也需要给一个值。
调用时:sample(实参),这里给的参数是一个实际具体的值。
参数在函数中作为接受外界信息的一个窗口

return

1将函数中的结果通过return关键字扔出来,通过窗口向外传递。用啥往外扔啥。
让其他部分也可运用该结果
2return()仅限于打印在终端上,辅助查看,但是在外部是无法使用的
***注意:***只要有返回值的函数,调用这个函数必须用一个变量去接返回的结果。

def cola(money,volumn):
    result=volumn/money
    print(result)
    return 'i don\'t care'#抛出一个结果
a=cola(2.5,3)#用a来接cola函数抛出的值
print(a)

3.如果return抛出了多个值,但是只有一个容器去接受它,那么这些值会被作为一个整体,以元组的形式抛出。
如果接受的容器也是多个,那么会分别赋值。

#购物车小程序 判断用户是否登录,加入商品到购物车
islogin=False
def shifou(name,password):
    if name=='rick'and password=='123456':
        print('您已成功登录')
        return True#布尔数开头要大写
    else:
        print('请输入正确的用户名和密码')
        return False
def goods(name1):
    if name1:
        goodname=input('请输入您购买的商品:')
        print('您购买的商品是:{}'.format(goodname))
    else:
        print('请您重新登录!')
while islogin==False:#输错之后可以再次输入
    name=input('请输入您的账户:')
    password=input('请输入您的密码:')
    islogin=shifou(name,password)#将name和password的值传入,用一个容器来接程序抛出的值
    goods(islogin)#调用goods()函数,并将islogin的值传入
    

4.函数之间的嵌套调用

#函数之间的调用
#例1
def a ():
    print('调用了a函数')
def b():
    print('调用了b方法')
    a()
b()

结果:

调用了b方法
调用了a函数

函数调用练习:

#函数嵌套调用练习
#要求:用户登录,输入用户名,输入密码,输入验证码
import random
def generate_checkcode(n):#注意验证码的产生方式
    code=''
    s='1234567890abcdefghijklmnopqrstABCDERDF'
    for i in range(n):
        RandomNum=random.randint(0,len(s)-1)#产生一个在s长度之内的随机数
        code+=s[RandomNum]#逐个拼接为一个字符串
    return code#抛出验证码用来供其他函数使用
def login():
    username=input('请输入你的用户名:')
    password=input('请输入你的密码:')
    #调用验证码生成函数,生成一个验证码
    code=generate_checkcode(4)#想产生几位验证码就输入几作为参数,用一个容器接住它
    #调用产生验证码的函数
    print('您的验证码是{}'.format(code))
    code1=input('请输入您的验证码:')
    #验证:
    if code1.lower()==code.lower():#使不区分大小写
        print('验证码正确')
        if username=='rick'and password=='123456':
            print('恭喜您登录成功!')
        else:
            print('用户名或密码有误')

    else:
        print('验证码输入有误')

#调用函数
login()
5.通过函数更改方法之外的变量时,记着在变量之前加上global,告诉系统这是一个全局变量。(在改变它的函数里加上global 变量名)
#如何改变函数外的变量
apple=10
def a():
    global apple
    apple+=10
    return apple
a()
print(apple)

匿名函数:格式
lambda 参数:返回的结果
函数小结:
普通函数:
def 函数名(参数):
函数体
1.如何定义函数
2.调用函数
没有返回值时,再用函数接返回值会得到none

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值