My suggestion here would allow this, but could be considered to make your function “messier”.
function A(x; karg1=nothing)
if isnothing(karg1)
karg1 = 3
else
# karg1 was explicitly given
end
# rest of function
end
And you could even disambiguate whether the keyword argument was explicitly given with the default value, e.g.
function A(x; karg1=nothing)
if isnothing(karg1)
karg1 = 3
elseif karg1 == 3
# karg1 was explicitly given as the default value
end
# rest of function
end