python学习 day08 (3月13日)----函数

函数

一。定义  def  关键字  函数名():

      函数体

函数 ---- 封装#def 关键字
# #定义后的函数就像变量  不调用是不执行的
# #函数名() ==函数的调用
def code():
    print('code a new!')
code()
# 局部变量
函数的调用:
  函数名+()调用函数的时候不在缩进内,必须顶行写
def hanshu():
  hanshu...
hanshu()或者
if True:
  hanshu()

二。执行

#函数的执行过程
def make(): #第一步 之后没了
    print(1)
make # 内存空间  当➕ ()时执行
print(make)
make()
print(make())# 打印函数为空
#定义——调用——函数体的代码

 

三。函数的返回值

def back():
    print('f')
    return 'a','b'    #  下面代码不执行, break 且结束了这个函数
    print('能打印吗?')
    return 1
ret = back()  # return  多个 只有第一个
print(ret) #('a', 'b')  多个的话为元组  返回值 不写内容返回None 不写return 也是None
1.没有返回值      写了return 没有返回值
都默认返回None
2,一个返回值,返回本身
多个返回值,返回的是一个元组
3,return 下面的代码不执行,并且结束这个函数(if缩进里面不这样,同上)
# 返回值
def make():
    print('1')
    return ''*2
    return 2*45print(id(ret),id(make()))#地址一样  就是同样的print(ret)

    是赋值?

ret =  make()  因为他俩一样
print(ret) = print(make())
make()  函数执行
ret  函数执行  一样的

 四。函数的参数  形参和实参

 
 
#函数怎么样,必须保证参数都有值 无论是默认值,还是赋值的参数
形参,函数定义的时候
         位置参数 a,b 传参的时候一一对应
         默认参数  a =1     在定义的时候已经定义好了
实参,函数调用的时候
         位置参数 1,2 传参的时候一一对应给形参
         关键字参数a = 1 通过形参的名字指定传值    
混合:
        形参def func(a,b,c,f=1)
        实参func(1,2,3,f=2)
传参,将实参返回形参的过程        
      #位置参数 >  关键字

 补充内容 以后会用到    三元运算符 

不确定赋值的内容时, 使用!
a if a>b else b
五。出错总结:

#不对  多元素 没赋值TypeError: make() missing 1 required positional argument: 'c'
扫描二维码关注公众号,回复: 5517223 查看本文章
#__author : 'liuyang' 
#date : 2019/3/13 0013 上午 8:34
'''
a = 'b'
c = 'd'
print(a is c)
print(a == c)
d  = {}
lis = ['alex','wusir','太白']
a = d.fromkeys(lis,[])
print(a)
a['alex'] = 1
print(a)
a = d.fromkeys([1,2,3],'str')
print(a)
# print(id(a[1]))
# print(id(a[2]))
# print()
# a[1] = 2
# print(id(a[1]),id(a[2]))
# print(a)
# #函数 ---- 封装
#
# #def 关键字
# #定义后的函数就像变量  不调用是不执行的
# #函数名() ==函数的调用
def code():
    print('code a new!')
code()
def code():
    print('a')
code()
# 局部变量

#函数的执行过程
def make(): #第一步 之后没了
    print(1)
make # 内存空间  当➕ ()时执行
print(make)
make()
print(make())# 打印函数为空
#定义——调用——函数体的代码
#函数的返回值
def back():
    print('f')
    return 'a','b' #  下面代码不执行, break 且结束了这个函数
    print('能打印吗?')
    return 1
ret = back()  # return  多个 只有第一个
print(ret) #('a', 'b')  多个的话为元组  返回值 不写内容返回None 不写return 也是None

# 返回值
def make():
    print('1')
    return '它'*2
    return 2*45
ret = make()
print(id(ret),id(make()))
print()
print(ret)
print(make())
#函数名+()  不管在什么位置都是在执行函数
# print() 到后一个括号才算执行吗?
def make():
    print(1)
    print(2)
    print(3)
print(make(),make()) # == make() make() print(make(),make())
'''

#函数的参数
def make(char):  #形参 形式上的参数 char =??
    print('打开%s'%char)
make('word')  # 实参  形给了实

#将实参传递给形参 -------》传参

def make(char,addr,alpa):  #形参 形式上的参数 char =??
    print(f'{char}')
    print(char)
    print(addr)
    print('%s'%char)
make('word',[],'aaa')  # 实参  形给了实   #错误 半个黄括号 有的变量没给
#一一对应
def summ(a,b):

    c = a+b
    return c
print(summ(1,1))


def da(a, b):
    if a>b:
        pass
    else:
        a= b
    return a
print(da(10,9))

def da(a, b):
    if a>b:
       return a
    else:
        return b
print(da(1,1))
def da(a, b):
#   返回  条件成立的结果 不成立的结果
    c =  a if a>b      else b
    return c
    # return a if a>b else b
print(da(1,1))
# def de(a,b):
#     c,b = a if a>b else b
#     print(c,b)
# print(de(1,2))
li = [1,2,3,65]
la = []
def reverses(a):
    for i in range(len(a)-1,-1,-1):
        # print(li[i])
        la.append(li[i])
    return la
# reverses(li)
print(reverses(li))

# li = [1,2,2,5,3,65]
# la = []
# def sort(a):
#     for i in range(0,len(a)-1,1):
#         if i
#         la.append(li[i])
#     return la
# # reverses(li)
# print(reverses(li))
li = [1,2,2,5,3,65]
def func(a):
    print(a[::-1])
func(li)
li = [1,2,2,5,3,65]
# def fun(b):
    # for l in b:


def make(a,b):
    print(a,b)
# make(1,2,1)  #不能付两个值吗  只能1对1 吗?
#
# def make(a,b,d, c=1):
#不对
# def make(a, b, c=1,d):#SyntaxError: non-default argument follows default argument
#     print(a,b,d)
# make(1,2,3)     #形参   默认在前
#不对  多元素 没赋值TypeError: make() missing 1 required positional argument: 'c'
# def make(a,b,d, c):
#     print(a,b,c)
# make(1,1,2)
'''
def fuzhi(name,age,sex ='男' ):
    print(name,age,sex)
while 1:
    life_list = input('name,age,sex').split(',')
    if len(life_list)>2:
        a,b,c= life_list
        fuzhi(a,b,c)
    else:
        a,b = life_list
        fuzhi(a,b)
        #函数怎么样,必须保证参数都有值 无论是默认值,还是赋值的参数
'''
a = 11
b = 13
print(a if a>b else b)
li = [1,2,5,3,65]
a = []
def sortt(c):
    b = 0
    for ll in li:
        if ll > b:
            for i in li:
                a.append(i)
                b = i
    print(a)
sortt(li)

def fun(a,b,c,d=1):   #位置+形参 (位置+默认)混合形参
    print(a,b,c,d)
fun(1,2,3)  #位置参数
fun(1,3,4,d=4)   #实参 (位置+关键字)  混合实参  替换了
# fun(d=4, 1, 3, 4) #不对   #位置参数 >  关键字
# open('liu','w','utf-8')# 不对  因为‘utf-8’是 第四个
open('liu','w',encoding='utf-8')#所以


猜你喜欢

转载自www.cnblogs.com/Doner/p/10522244.html
今日推荐