day 09 预科

函数

def twoSum(nums,target):
    for i in range(len(nums),-1,-1):  # for i in range(4) == for i in [0,1,2,3]
    for j in range(i+1,len(nums)):  # [1,2,3] 
        if nums[i]+num[j]==target:
            returni,j
            
            
nums=[2,7,11,15]
target=9
res=twoSum(nums,target)
if list(res)==[0,1]
    print('通过')
else:
    print('不通过')
     

函数:数学中的函数,自变量+因变量---》python函数和数学中的函数毫无瓜葛。

下水道--》通下水道--》找一个工具(买一个工具--》

方便拿来就用,不需要关心内部构造)

函数就相当这个工具---》干一件特定的事

函数是在分开工具,不会减少代码量。

定义函数

def register():
# 注册
    print('注册功能')
    username_inp = input('请输入你的用户名:')
    print('username_inp:', username_inp)
    pwd_inp = input('请输入你的密码:')
    print('pwd_inp:', pwd_inp)

    with open('user_info.txt', 'a', encoding='utf8') as fa:
        if ':' in username_inp:
            print('输入错误,用户名不能含有 :')
        else:
            fa.write(f'{username_inp}:{pwd_inp}')
            print('保存成功')


def login():
    # 登陆
    print('登录功能')
    with open('user_info.txt', 'r', encoding='utf8') as fr:
        data = fr.read()
        data_split = data.split(':')

    username, pwd = data_split[0], data_split[1]  # 一次性定义多个变量
    # username = data_split[0]
    # pwd = data_split[1]

    username_inp = input('请输入你的用户名:')
    pwd_inp = input('请输入你的密码:')

    if username == username_inp and pwd == pwd_inp:
        print('登录成功')
    else:
        print('登录失败')

# 以上只是在定义一个函数,创建工具(函数定义阶段只检测语法,不执行代码)


# 如果要运行函数,直接调用
# login()
register()

函数定义的三种形式

空函数

def register():
    # TODO:注册功能,暂时回话

有参函数(有参数()的函数)

def compare(x,y):
    # x=10
    # y=10
    if x>y:
        print(x)
    else:
        print(y)

当你使用手电筒,在使用的时候调一下(输入一个参数)

compare(30,40)

无参函数

def func():
    print(1) 
    
func()    

函数的返回值

def compare()
   x=10
   y=20
   if x>y:
        print(x)
   else: 
        print(y)  # 20
        
  print(1, compare)  # <function compare at 0x00000255297B1EA0> # 函数内存地址
# res = compare() # res接收一个变量值(函数的返回值)
# print('res:',res)

# 不打印,我需要拿到这个值    
 

1.如果函数没有返回值,默认返回None。

None就是返回值(使用函数后拿到的一个结果)

2.函数可以通过return返回出返回值

def compare():
    x=10
    y=20
    if x>y:
        return x
    else:
        return y
    
res=compare()
print(res)

3.return 可以终止函数

def print_1_10():
    for i in range(10):
        if i =8:
            return # 终止函数
        print(i)
        
print_1_10()

4.return 可以返回多个值,以列表形式存储

def return_nums():
    return 10, 100, 1000

res=return_nums()
print(res[1])

函数的参数

def compare(num1,num2): # 形(形式)参;一般具有描述意义,毫无作用(接收实参)---》变量名(接收变量值)
    
    if num1>num2:
        print(num1)
    else:
        print(num2)
        
        
        
compare(80,140)  #实(实际)参:具有实际的意义, 具体的一个值(传给形参)--》变量值
        

形参

位置形参

从左到右一个一个写过去,就叫做位置形参。

默认(默认值)形参:给位置形参一个默认值,让它成为默认形参,以后调用不需要为他传值,但是你为它传值的话,它也会接收。

默认参数必须得放在最后面(位置参数后面)

def compare(num1,num2=140): #  形(形式)参:一般具有描述意义,毫无作用(接收实参) --》变量名(接收变量值)
    if num1>num2:
        print(num1)
    else:
        print(num2)
        
        
compare(80,60)  # 实(实际)参:具有实际的意义,具体的一个值(传给形参)---》 变量值
compare(180)  #实(实际)参:具有实际的意义,具体的一个值(传给形参) ---》变量值

实参

位置实参

从左到右一个一个写过,就叫做位置实参,(有多少个位置形参,就必须有多少个位置实参,从左到右依次传值)

关键字实参

位置实参加上默认值,然后按照位置形参名传值。

关键字实参也必须在位置参数后面

def compare2(num1,num2): # 形(形式)参:一般具有描述意义,毫无作用(接收实参) --》变量名(接收变量值)
    if num1 > um2:
        return num1
    else:
        return num2
    
    def compare4(num1,num2,num3,num4):
        print(num1,num2,num3,num4) # 4 0 2 3
        res1=compare2(num1,num2)
        res2=compare2(num3,num4)
        res3=compare2(res1,res2)
        
        return res3
    
res=compare4(4,0,num4=2,num3=3)  # 4 0 3 2  #   关键字参数,按照位置形参名给值,这个一般用于参数过多(一般建议函数参数不超过3个)
print(res)

     

后面加的是参数的数据类型,没有限制死; ---》限制返回值

def f1(num:list,target:int)--》:
    print(nums,target)
    return[1,2]

s='nick' # type:list # 规定了这个变量的数据类型
原文地址:https://www.cnblogs.com/colacheng0930/p/11447086.html