A pseudofunctor is a specific algebraic notion of weak $2$-functor between bicategories (including strict 2-categories), i.e. a functor which preserves composition and identities only up to coherent specified isomorphism.
In general, there is not much reason to say “pseudofunctor” instead of “functor,” since by far the most important type of functor between arbitrary bicategories is weak. However, if the domain and codomain are known to be strict 2-categories (including ordinary $1$-categories), it can be helpful to say “pseudofunctor” or “weak functor” to emphasize that it is not a strict 2-functor. Note that if the codomain is a $1$-category, then there is no difference.
Pseudo or weak functors are also to be distinguished from lax functors and oplax functors, which preserve identities and composition only up to a transformation in one direction or the other, which may be non-invertible.
An older terminology, which should probably be avoided at all costs, uses “homomorphism of bicategories” for a weak functor and “morphism of bicategories” for a lax one.
Given bicategories $C$ and $D$, a pseudofunctor (or weak $2$-functor, or just functor) $P\colon C \to D$ consists of:
and
commute; and
commutes.
If we remove the requirement that $P_{\id_x}$ and $P_{x,y,z}(f,g)$ be invertible, then we have the definition of lax functor. Thus, a pseudofunctor may be defined as a lax functor whose comparison constraints are invertible.
If in the definition of lax functor we reverse the direction of the constraints, then we have an oplax functor. Thus, if we consider the inverses of the constraints of a pseudofunctor, we obtain an oplax functor. Because there is little difference between specifying an invertible morphism and specifying its invertible inverse, one could equally well define a pseudofunctor to be an oplax functor whose constraints are invertible (i.e. reverse the direction of the isomorphisms $P_{\id_x}$ and $P_{x,y,z}(f,g)$ above), and in the literature one sometimes finds this definition instead.
Of course, in particular applications, one direction or the other may be slightly more “natural”. For instance, when a Grothendieck fibration $E\to B$ gives rise to a pseudofunctor $B^{op} \to Cat$, the natural comparison maps (induced by the universal property of cartesian arrows) go in the “lax direction”. Dually, when a Grothendieck opfibration $E\to B$ gives rise to a pseudofunctor $B\to Cat$, the natural comparison maps go in the “oplax direction”.
For $C$ a strict 2-category, there is a universal procedure for replacing pseudofunctors $F \colon C \to Cat$ with strict 2-functors $\hat{F} \colon C \to Cat$, where “universal” is in the following sense:
For any pseudofunctor $F \colon C \to Cat$, there is a strict 2-functor $\hat{F}\colon C\to Cat$ and a pseudonatural equivalence $\eta_F\colon F\to \hat{F}$. Moreover, for any strict 2-functor $G \colon C \to Cat$, composing with $\eta_F$ yields an isomorphism between the category of pseudonatural transformations $F \to G$ and modifications between them, and the category of strict natural transformations $\hat{F} \to G$ and modifications between them.
For each object $c$ of $C$, define $\hat{F}(c)$ to be the category whose objects are pairs $(f, x)$ with $f \colon d \to c$ in $C$ and $x \in Ob(F(d))$, and whose morphisms $(f, x) \to (f', x')$ are morphisms $F(f)(x) \to F(f')(x')$ in $F(c)$. For $g \colon c \to c'$ in $C$, the functor $\hat{F}(g) \colon \hat{F}(c) \to \hat{F}(c')$ takes $(f, x)$ to $(g f, x)$; notice $\hat{F}(-)$ preserves compositions $g' \circ g$ strictly since composition in $C$ is strictly associative. (Strictly speaking we have only defined the functor $\hat{F}(g)$ at the object level. However, the extension to morphisms $\theta \colon F(f)(x) \to F(f)(x')$ is the obvious one, where
preserves compositions $\theta' \circ \theta$ by naturality of the structural constraints $F(g)F(f) \cong F(g f)$.) Similarly, for 2-cells $\alpha: g \to g'$, the natural transformation $\hat{F}(\alpha) \colon \hat{F}(g) \to \hat{F}(g')$ is defined by taking its component at an object $(f, x)$ to be given by pasting in the first component: $F(\alpha \cdot f)(x) \colon F(g f)(x) \to F(g' f)(x)$.
One easily checks that $\hat{F}$ is pseudonaturally equivalent to $F$…
The construction of the strictification is a special case of a general strictification construction due to Power. Later Steve Lack showed that the strictifications obtained from Power’s coherence theorem always have a universal property analogous to that of the result above.
Historically the term ‘pseudofunctor’ was conceived by Grothendieck who weakened, around 1957, the concept of a contravariant functor from a 1-category to Cat, by effectively replacing the $1$-category Cat by the 2-category $Cat$ and allowing (contravariant) functoriality up to coherent $2$-cells. This was recorded in his Bourbaki seminar on descent via pseudofunctors. Later in SGA1 Grothendieck (with the assistance of Pierre Gabriel) replaced pseudofunctors in the treatment of descent by more invariant fibered categories. Benabou, in his 1967 treatise introducing bicategories, generalized the pseudofunctors of Grothendieck to pseudofunctors between arbitrary bicategories but under the name ‘homomorphism of bicategories’.
2-functor / pseudofunctor