首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python 函数为什么会默认返回 None?

    它们的执行效果跟直接写 return 语句相比,是完全相同的: 这 4 个例子属于两种类型:一种没有写 return,但是都有隐藏的 return 返回值;一种写了 return,而且实际也有返回值。...不管有没有写 return,它们都会执行 return 的逻辑,而且默认的返回值就是 None。 那么,问题来了:Python 的函数为什么能默认返回 None 呢?它是如何实现的呢?...答案就在解释器中,当 CPython 解释器执行到函数的最后一个代码块时,若发现没有返回值,它就会主动地加上一个 Py_None 值返回(出自:compile.c): 也就是说,如果定义的函数没有返回值...,Python 解释器就会(强行地)默认给我们注入一段返回逻辑!...那么,这就会引出新的问题:Python 为什么要求函数都要有返回值呢?为什么它不像某些语言那样,提供一个 void 关键字,支持定义无返回值的空函数呢?

    2.9K40

    【Python】函数 ④ ( 函数 None 返回值 | None 值应用场景 | 用于 if 判断 | 定义无初始内容变量 | 代码示例 )

    # 函数体 # return 返回值 (可选) Python 函数中没有显示定义返回值 , 那么返回的就是 特殊字面量 None , 其类型是 ; None...- 接收 None 返回值 下面的代码中 , hello 函数没有使用 return 关键字 返回 返回值 ; 该 hello 函数 没有显示定义 返回值 , 实际上该函数返回的是 None 返回值...; 使用变量接收该函数的返回值 , 返回值是 None , 返回值类型是 NoneType ; 代码示例 : """ 接收 函数 None 返回值示例 """ # 定义无返回值的函数 def hello...return 关键字返回 None 在该示例中 , 比上一个示例多了 return None 返回值 , 其执行效果与没有返回值一模一样 ; 代码示例 : """ 接收 函数 None 返回值示例 ""...None 二、None 值应用场景 ---- 1、None 值应用场景简介 函数 None 返回值应用场景 : 函数返回值 : 表示函数没有返回值 ; 用于 if

    1.3K20

    什么叫程序员的浪漫,只要能用代码做成的都不叫事,Python制作炫酷七夕照片墙

    今天来教大家做一个“七夕照片墙”,可以把她/他的照片,合成一张你指定形状的图片 没有对象照片的,就自己想办法吧 第一步:导入所需的模块 import os import random import pygame...# pip install pygame from PIL import Image # pip install pillow 第二步:先初始化模块 pygame.init() 第三步:定义字体...,设定初始化大小 text = '七夕快乐' # 字体形状, 可以修改成名字 size = 30 # 字体大小 # 定义字体,参数依次是字体、字体大小 font = pygame.font.Font...image_col_list 是 image_row_list 中的每一个列表元素 image_col_list = [] for y in range(width): # get_at...((x,y))是返回像素点的像素值,[0]为第一个值R, # 由于渲染后的图只有黑色和白色,所以只要[0]!

    39220

    Python 函数返回值别漏标!显式声明 None 的 3 大好处

    显式声明 None 的 3 大好处很多刚写 Python 的朋友,甚至有些老开发者,都会犯一个 “不起眼” 的错:函数明明没有返回值(比如只做打印、保存数据这类操作),却不明确标注返回None。...而显式声明-> None,就是给这个工具 “指路”,让它知道你这个函数就该返回None,一旦返回了别的东西,马上报错。...用表格更直观:显式声明 vs 隐式声明的区别对比维度 显式声明返回 None(def func () -> None)隐式返回 None(def func ())可读性 高:一眼知道 “无返回值”...错误 1:隐式返回 None,却标注了其他类型比如函数实际没返回值(返回 None),但类型注解标了-> str,mypy会报错,自己也容易误解:# 错代码:实际返回None,却标了-> strdef...,函数返回 None。

    28710

    Mybatis使用generatedKey在插入数据时返回自增id始终为1,自增id实际返回到原对象当中的问题排查

    今天在使用数据库的时候,遇到一个场景,即在插入数据完成后需要返回此数据对应的自增主键id,但是在使用Mybatis中的generatedKey且确认各项配置均正确无误的情况下,每次插入成功后,返回的都是...终于凭借着一次Debugg发现的问题,原来在使用Mabatis中的insert或者insertSelective方式插入时,如使用int insert(TestGenKey testGenKey)时,返回值...int表示的是插入操作受影响的行数,而不是指的自增长id,那么返回的自增id到底去哪里了呢?...通过下面的Debugg我们知道自增id返回到testGenKey的原对象中去了。 举例示范配置 数据库示例表  generator的配置文件 <?...sex.trim(); } } 测试及Debugg 编写测试方法测试插入 插入成功后观察对应的变量对应的值 总结:调用Insert后插入操作之后,所得到自增长Id被赋值到原对象当中,而不是返回值

    3.1K10

    Python游戏工具包---Pygame最常用的15个模块详解(附pdf版本)

    get_surface() -> Surface 返回当前显示的 Surface 对象。如果没有设置任何显示模式,那么返回 None。...如果混音器尚未初始化,则返回None pygame.mixer.stop()停止播放所有声道 stop() -> None 这将停止所有活动混音器通道的播放。...如果没有非活动通道,则此函数将返回None。如果没有非活动通道且force参数为True,则会找到运行时间最长的声道并返回它。...collidedict(dict) -> (key, value) 返回值是第 1 个有相交的矩形所在字典中的键和值;如果没有找到,返回 None。...在pygame初始化之前,这将始终为0。 **pygame.time.wait() ** 暂停程序一段时间 wait(milliseconds) -> time 将暂停一段给定的毫秒数。

    18.3K56

    使用 Python 和 Pygame 制作游戏:第一章到第五章

    偶数除以 2 将始终有零的余数。奇数除以 2 将始终有一个余数。...leftTopCoordsOfBox()函数将接受盒子坐标并返回像素坐标。因为一个盒子在屏幕上占据多个像素,我们将始终返回盒子左上角的单个像素。这个值将作为一个由两个整数组成的元组返回。...当collidepoint()返回True时,我们知道找到了被点击或移动的框,并将返回框坐标。如果它们都没有返回True,那么getBoxAtPixel()函数将返回值(None, None)。...如果传入的像素坐标不在任何棋盘空间上,则返回值为(None, None)。...通常当一个函数到达结尾并隐式地返回None值(也就是说,没有明确的return语句表明它返回None)调用它的代码并不关心返回值。

    3.3K10

    pygame中几个重要模块

    surface对象,这里可能就会用到image模块 pygame.surface((width,height),flag=0,depth =0,mask = None) surface.copy()返回调用实例的副本...,也是一个surface对象 pygame.surface.blit(sourse,dest,area = None,special_flag=0)这里的surface不是模块名而是一个创建好了的surface...列表中是需要返回的多个事件类型,返回值也会相应的返回发生了的事件 生成一个特定的时间 pygame.event.Event(type,dict) pygame.event.Event(type,**attribute...(surface,(width,height),DestSurface = None)返回的是平滑放大或者是缩小后的surface对象,第一个参数就是需要放大或者是缩小的对象,后面的我们要放大缩小后达到的...() font.render(text,antialias,color,background=None)返回的是surface对象,文本并不能直接显示出来,需要先把文本渲染成图片画到另一个surface

    2.1K20

    Python之pygame学习精灵碰撞做一个躲避球游戏(13)

    groupcollide(group1,group2,dokill1,dokill2,collided = None) - > Sprite_dict 这将在两组中找到所有精灵之间的碰撞。...通过比较Sprite.rect每个Sprite 的属性或通过使用碰撞函数(如果它不是None)来确定碰撞。 group1中的每个Sprite都被添加到返回字典中。...它应该将两个精灵作为值并返回一个bool值,指示它们是否发生碰撞。如果未传递碰撞, 则所有精灵必须具有“rect”值,该值是精灵区域的矩形,将用于计算碰撞。 这句话很重要!...spritecollideany(sprite,group,collided = None) - > Sprite与返回的精灵碰撞。...spritecollideany(sprite,group,collided = None) - >无无冲突 如果精灵与组中的任何一个精灵发生碰撞,则返回该组中的一个精灵。无冲突时返回无。

    3.7K30

    pygame游戏常用方法

    然后就是看这个方法需要传入什么内容,然后返回什么内容;知道这两点基本上就可以上手使用了,想要了解更底层就可以看源代码。...最简框架 写游戏也是有基本套路的,首先是一个可以跑起来的基本框架; import pygame import sys pygame.init() window = pygame.display.set_mode...对象 可以看作一个图像对象,这个概念非常重要,屏幕上看见的图形都是这个对象; 不管是图片加载返回的对象: pygame.image.load -> Surface load(filename)...-> Surface load(fileobj, namehint="") -> Surface save(Surface, filename) -> None 直接生成对象; surface...() draw text on a new Surface render(text, antialias, color, background=None) -> Surface sprite类 这个对于管理多个游戏对象非常有用

    1.2K30

    【python游戏编程之旅】第七篇---pygame中的冲突检测技术

    别担心,pygame还为我们提供了一个更加精确的检测:pygame.sprite.collide_mask()。 这个函数接收两个精灵作为参数,返回值是一个bool变量。...调用这个函数的时候,一个组中的所有精灵都会逐个地对另外一个单个精灵进行冲突检测,发生冲突的精灵会作为一个列表返回。...这个函数在判断精灵组和单个精灵冲突的时候,会返回一个bool值。 5.精灵组之间的矩形冲突检测 pygame.sprite.groupcollide()。...#检测玩家是否与食物冲突,是否吃到果实 attacker = None attacker = pygame.sprite.spritecollideany(player,...(None, 36) timer = pygame.time.Clock() #创建精灵组 player_group = pygame.sprite.Group() food_group = pygame.sprite.Group

    2.3K10
    领券