函数

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 # 规定了这个变量的数据类型

day 09 预科的更多相关文章

  1. Windows7WithSP1/TeamFoundationServer2012update4/SQLServer2012

    [Info   @09:03:33.737] ====================================================================[Info   @ ...

  2. day 09作业 预科

    作业 1.简述定义函数的三种方式. 定义函数的三种方式为空函数,有参函数和无参函数 2.简述函数的返回值. 如果函数没有返回值,会直接返回到None: 函数可以通过return返回出返回值: retu ...

  3. 《HelloGitHub月刊》第09期

    <HelloGitHub>第09期 兴趣是最好的老师,<HelloGitHub>就是帮你找到兴趣! 前言 转眼就到年底了,月刊做到了第09期,感谢大家一路的支持和帮助

  4. js正则表达式校验非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. iOS系列 基础篇 09 开关、滑块和分段控件

    iOS系列 基础篇 09 开关.滑块和分段控件 目录: 案例说明 开关控件Switch 滑块控件Slider 分段控件Segmented Control 1. 案例说明 开关控件(Switch).滑块 ...

  6. http://www.cnblogs.com/Lawson/archive/2012/09/03/2669122.html

    http://www.cnblogs.com/Lawson/archive/2012/09/03/2669122.html

  7. u-boot-2010.09移植(A)

    第一阶段 1.开发环境 系统:centOS6.5           linux版本:2.6.32         交叉编译器:buildroot-2012.08 以上工具已经准备好,具体安装步骤不再 ...

  8. u-boot-2010.09移植(B)

    前面我们的u-boot只是在内存中运行,要想在nandflash中运行,以达到开机自启的目的,还需作如下修改 一.添加DM9000网卡支持 1.修改board/fl2440/fl2440.c中的boa ...

  9. Linux JDK 安装及卸载 http://www.cnblogs.com/benio/archive/2010/09/14/1825909.html

    参考:http://www.cnblogs.com/benio/archive/2010/09/14/1825909.html

随机推荐

  1. 支付宝小程序开发——rich-text富文本组件支持html代码

    前言: 与微信小程序不同,支付宝小程序的富文本组件并不能直接支持html代码,如: 如上,支付宝小程序的富文本组件只支持数组类型,html代码需要使用 mini-html-parser 转换,具体用法 ...

  2. postgre查询一段时间内的数据

    select * from zaiko where createtime between (now() - interval '3 Days') and now() ; select * from z ...

  3. CentOS使用yum安装最新版nginx步骤

    sudo yum install yum-utilsvi  /etc/yum.repos.d/nginx.repo 输入: [nginx-stable]name=nginx stable repoba ...

  4. Java13新特性 -- switch表达式动态CDS档案(动态类数据共享归档)

    支持在Java application执行之后进行动态archive.存档类将包括默认的基础层CDS存档中不存在的所有已加载的应用程序和库类.也就是说,在Java 13中再使用AppCDS的时候,就不 ...

  5. web.py小记

    what's the web.py 相比于 Django 和 Flask,web.py 是轻量到不能再轻量的 web 框架,所有的功能都需要自己实现,所有不适合中大型 web 的开发,不过对于简单的 ...

  6. LeetCode 108. Convert Sorted Array to Binary Search Tree (将有序数组转换成BST)

    108. Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascendin ...

  7. Embarcadero Delphi 7 Lite 7.0.4.453 中文版

    https://www.7down.com/soft/116014.html 软件介绍 Embarcadero Delphi 7精简版 是Windows平台下著名的快速应用程序开发工具(Rapid A ...

  8. TELNET可以连通但无法创建数据库连接(Oracle)

    问题描述: 近期客户方进行了网络调整,申请A服务器的1521端口开通后,telnet可以访问,但是SQLPLUS.PLSQL等工具一直无法创建相应连接,提示连接超时. 问题排查: 对开放端口的所有服务 ...

  9. Python之路【第十七篇】:Python并发编程|协程

    一.协程 协程,又叫微线程,纤程.英文名Coroutine.协程本质上就是一个线程 优点1:协程极高的执行效率.因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线 ...

  10. Golang 读写文件

    读文件 func ReadFile_v1(filename string) { var ( err error content []byte ) fileObj,err := os.Open(file ...