Python 面试问题:自定义函数
itomcoil 2025-01-06 13:21 22 浏览
Python 中自定义函数可以使用关键字 def,如以下代码所示:
def function_name ( ):
to do statements
让我们定义一个简单的函数:
def hello() :
print("Hello World!")
hello() 函数是一个非常简单的函数,在调用时仅显示 Hello World!。
还可以将参数传递给函数。如果希望函数 hello() 打印个性化消息,需要将参数传递给函数。
def hello(name) :
print("Hello", name)
函数调用
def hello(name) :
print("Hello", name)
name = input("请输入名字:")
hello(name)
# 输出:
请输入名字:jack
Hello jack
问题 1.Python 中有哪些不同类型的函数
Python 中有两种类型的函数:
- 内置函数:Python 中的库函数
- 用户定义的函数:由开发人员定义
问题 2.为什么需要自定义函数
在一个程序中,很多时候可能会一次又一次地调用某组代码。与其在需要的地方编写相同的代码段,不如定义一个函数并将代码放入其中。只要有需要,就可以调用此函数。这样可以节省时间和精力,有助于组织编码工作,代码测试也变得容易。
问题 3.什么是函数头
以 def 开头并以冒号 (:) 结尾的函数定义的第一行称为函数头。
问题 4.函数何时执行
当对函数进行调用时,函数将执行。可以直接从 Python 提示符或其他函数调用。
问题 5.什么是参数,参数和变量有什么区别
参数是在函数定义中定义的变量,而变量是传递给函数的实际值。变量中携带的数据将传递给参数。
def function_name(param):
在前面的语句中,param 是一个参数。
问题 6.什么是默认参数
默认参数也称为可选参数。在定义函数时,如果参数提供了默认值,则称为默认参数。如果在调用函数时,用户未为此参数提供任何值,则该函数将使用它的默认值。如下代码 age 是可选参数。
def hello(name, age=10) :
print(f"my name is {name},I'm {age} years old.")
name = input("请输入名字:")
hello(name)
'''输出:
请输入名字:jack
my name is jack,I'm 10 years old.
'''
def hello(name, age=10) :
print(f"my name is {name},I'm {age} years old.")
name = input("请输入名字:")
hello(name,20)
'''输出:
请输入名字:jack
my name is jack,I'm 20 years old.
'''
问题 7.Python 中的函数参数有哪些类型?
Python 中有三种类型的函数参数:
- 默认参数: 如果用户没有提供任何值,则假定为默认值。
- 关键字参数: 对于具有多个默认参数值的函数来说,必须按顺序指定其参数值。在调用函数时,使用参数的关键字来指定为哪个参数赋值,而不管它们的位置如何。
def hello(name, age) :
print(f"my name is {name},I'm {age} years old.")
hello(age=10,name='jack')
- 可变长度参数: 如果不确定函数参数的个数,可以使用可变长度参数。在函数定义中,使用一个星号标注可变长参数,此时,传入的多个参数将被封装为一个元组传入函数内。
对于同时带有参数名和实际传入对象的关键字参数,也可一次性传入多个,即可变长关键字参数。与可变长参数不同,可变长关键字参数需要用两个星号来进行说明,同时实际传入过程是 python 会将其转化为字典进行传入
def mysum(*num):
r = 0
for i in num:
r += i
return(r)
print(mysum(1,2))
print(mysum(1,2,3))
def myFun(**kwargs):
for i in kwargs:
print(i,'-',kwargs[i])
myFun(a=10, b=20, c=30, d=40)
问题 8.将不可变对象和可变对象作为参数传递给函数有什么区别
如果将字符串、元组等不可变参数传递给函数,则会传递对象引用,但无法更改这些参数的值。它的作用类似于按值传递调用。可变对象也通过对象引用传递,但其值可以更改。
问题 9.编写一个函数,使用 for 循环查找数字的阶乘
def factorial(number):
j = 1
if number==0|number==1:
print(j)
else:
for i in range (1, number+1):
print (j," * ",i," = ", j * i)
j = j*i
factorial(5)
问题 10.自定义函数,使用 for 循环输出斐波那契数列
def fibonacci(num):
i = 0
j = 0
k = 0
for i in range(num):
if i==0:
print(j)
elif i==1:
j = 1
print(j)
else:
temp = j
j = j+k
k = temp
print(j)
fibonacci(10)
问题 11.使用 while 循环改写以下代码
def func(i, j):
if i == 0:
return j
else:
return func(i-1, j+1)
print(func(6,7))
def func(i,j):
while i > 0:
i =i- 1
j = j + 1
return j
print(func(6, 7))
问题 12.编写代码查找两个给定数字的最大公约数
def hcf(x,y):
small_num = 0
if x>y:
small_num = y
else:
small_num = x
for i in range (1, small_num+1):
if (x % i ==0) and (y % i ==0):
hcf = i
return hcf
print (hcf(6,24))
问题 13.以下代码的输出是什么
total = 0
def add(a,b):
global total
total = a+b
print("inside total = ", total)
add(6,7)
print("outside total = ", total)
输出如下:
inside total = 13
outside total = 13
问题 14.以下代码的输出是什么
total = 0
def add(a,b):
total = a+b
print("inside total = ", total)
add(6,7)
print("outside total = ", total)
输出如下:
inside total = 13
outside total = 0
问题 15.编写代码以使用欧几里得算法查找 HCF
欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。两个整数的最大公约数等于其中较小的数和两数相除余数的最大公约数。前面使用递归函数计算最大公约数也使用了使用欧几里得算法。
def GCD(a, b):
while b != 0:
a, b = b, a % b
return a
a=28
b=72
print(f"{a}和{b}的最大公约数是:{GCD(a,b)} ")
问题 16.编写代码以在字符串中查找所有可能的回文分区
通过使用 for 循环将字符串切片得到成所有可能的子字符串。然后检查每个子字符串,看看它是否是回文。
子字符串将转换为单个字符的列表。以相反的顺序,将列表中的字符连接为字符串。如果生成的字符串与原始字符串匹配,则它是回文。
def create_substrings(x):
substrings = [ ]
for i in range(len(x)):
for j in range(1, len(x)+1):
if x[i:j]!= '':
substrings.append(x[i:j])
for i in substrings:
check_palin(i)
def check_palin(x):
palin_str = ''
palin_list = list(x)
y = len(x)-1
while y>=0:
palin_str = palin_str + palin_list[y]
y = y-1
if palin_str == x:
print(x,"是回文!")
x = "mlayalam"
create_substrings(x)
输出
m 是回文!
l 是回文!
layal 是回文!
a 是回文!
aya 是回文!
y 是回文!
a 是回文!
ala 是回文!
l 是回文!
a 是回文!
m 是回文!
问题 17.什么是匿名函数
Python 中的 Lambda 可用于创建没有名称的函数。此类函数也称为匿名函数。Lambda 函数体中只有一行,不需要 return 语句。
total = lambda a, b: a + b
print(total(10,50))
问题 18.return 语句有什么用
return 语句退出函数并将值交还给函数的调用方,即返回函数执行结果。
def func(a,b):
return a+b
total = func(1, 2)
print(total)
问题 19.以下代码的输出什么
def happyBirthday():
print("Happy Birthday")
a = happyBirthday()
print(a)
输出:
Happy Birthday None
问题 20.以下代码的输出什么
m = 1
n = 2
def update_variables():
global m
m = 11
n = 22
update_variables()
print(m)
print(n)
11
2
?
文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!
?
- 上一篇:一日一技:Python中的gcd()方法
- 下一篇:RSA 复杂题目 ?
相关推荐
- selenium(WEB自动化工具)
-
定义解释Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),MozillaF...
- 开发利器丨如何使用ELK设计微服务中的日志收集方案?
-
【摘要】微服务各个组件的相关实践会涉及到工具,本文将会介绍微服务日常开发的一些利器,这些工具帮助我们构建更加健壮的微服务系统,并帮助排查解决微服务系统中的问题与性能瓶颈等。我们将重点介绍微服务架构中...
- 高并发系统设计:应对每秒数万QPS的架构策略
-
当面试官问及"如何应对每秒几万QPS(QueriesPerSecond)"时,大概率是想知道你对高并发系统设计的理解有多少。本文将深入探讨从基础设施到应用层面的解决方案。01、理解...
- 2025 年每个 JavaScript 开发者都应该了解的功能
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.Iteratorhelpers开发者...
- JavaScript Array 对象
-
Array对象Array对象用于在变量中存储多个值:varcars=["Saab","Volvo","BMW"];第一个数组元素的索引值为0,第二个索引值为1,以此类推。更多有...
- Gemini 2.5编程全球霸榜,谷歌重回AI王座,神秘模型曝光,奥特曼迎战
-
刚刚,Gemini2.5Pro编程登顶,6美元性价比碾压Claude3.7Sonnet。不仅如此,谷歌还暗藏着更强的编程模型Dragontail,这次是要彻底翻盘了。谷歌,彻底打了一场漂亮的翻...
- 动力节点最新JavaScript教程(高级篇),深入学习JavaScript
-
JavaScript是一种运行在浏览器中的解释型编程语言,它的解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript广泛用于浏览器客户端编程,通常JavaScript脚本是通过嵌...
- 一文看懂Kiro,其 Spec工作流秒杀Cursor,可移植至Claude Code
-
当Cursor的“即兴编程”开始拖累项目质量,AWS新晋IDEKiro以Spec工作流打出“先规范后编码”的系统工程思维:需求-设计-任务三件套一次生成,文档与代码同步落地,复杂项目不...
- 「晚安·好梦」努力只能及格,拼命才能优秀
-
欢迎光临,浏览之前点击上面的音乐放松一下心情吧!喜欢的话给小编一个关注呀!Effortscanonlypass,anddesperatelycanbeexcellent.努力只能及格...
- JavaScript 中 some 与 every 方法的区别是什么?
-
大家好,很高兴又见面了,我是姜茶的编程笔记,我们一起学习前端相关领域技术,共同进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力在JavaScript中,Array.protot...
- 10个高效的Python爬虫框架,你用过几个?
-
小型爬虫需求,requests库+bs4库就能解决;大型爬虫数据,尤其涉及异步抓取、内容管理及后续扩展等功能时,就需要用到爬虫框架了。下面介绍了10个爬虫框架,大家可以学习使用!1.Scrapysc...
- 12个高效的Python爬虫框架,你用过几个?
-
实现爬虫技术的编程环境有很多种,Java、Python、C++等都可以用来爬虫。但很多人选择Python来写爬虫,为什么呢?因为Python确实很适合做爬虫,丰富的第三方库十分强大,简单几行代码便可实...
- pip3 install pyspider报错问题解决
-
运行如下命令报错:>>>pip3installpyspider观察上面的报错问题,需要安装pycurl。是到这个网址:http://www.lfd.uci.edu/~gohlke...
- PySpider框架的使用
-
PysiderPysider是一个国人用Python编写的、带有强大的WebUI的网络爬虫系统,它支持多种数据库、任务监控、项目管理、结果查看、URL去重等强大的功能。安装pip3inst...
- 「机器学习」神经网络的激活函数、并通过python实现激活函数
-
神经网络的激活函数、并通过python实现whatis激活函数感知机的网络结构如下:左图中,偏置b没有被画出来,如果要表示出b,可以像右图那样做。用数学式来表示感知机:上面这个数学式子可以被改写:...
- 一周热门
- 最近发表
- 标签列表
-
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)
- shutil.copy() (33)